CSES - Putka Open 2015 – finaali - Results
Submission details
Task:Neliöt
Sender:adaisti
Submission time:2015-12-20 16:45:54 +0200
Language:Java
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.84 s1details
#20.85 s2details
#30.93 s3details

Code

import java.util.HashMap;
import java.util.Scanner;


public class Main {
    
    static char[] vokaalit = {'a', 'e', 'i', 'o', 'u', 'y'};
    static boolean sufTila = false;
    static char edellinenKonsonantti ='x';
    static char edellinenVokaali = 'y';
     
    public static void main(String[] args) {
        
        Scanner lukija = new Scanner(System.in);
        int maara = Integer.parseInt(lukija.nextLine());
        
        
        for (int i = 0; i < maara; i++) {
            String sana = lukija.nextLine();
            System.out.println(kieli(sana));
        }
        
        
        
        
    }

    private static String kieli(String sana) {
        
        if (sana.length() < 3) {
            return "QAQ";
        } else if (sana.length() > 11) {
            return "10-4";
        }
        
        
        
        int j = sana.length() - 1;
        int vierasperaisia = 0;
        char[] vierasp = {'b', 'c', 'd', 'f', 'g', 'q', 'w', 'x', 'z'};
        char jC = 'x';
        char iC = 'x';
        char jV = 'x';
        char iV = 'x';
        char jEd = 'x';
        char iEd = 'x';
        char vika = sana.charAt(sana.length() - 1);
        boolean vikaOnV = onVokaali(vika);
        boolean edjOnV = true;
        boolean ediOnV = true;
        
        if (vika == 'i') {
            return "10-4";
        }
        
        if (!vikaOnV) {
            return "QAQ";
        }
        
        if (!onVokaali(sana.charAt(0)) && !onVokaali(sana.charAt(1))) {
            return "QAQ";
        }
        
        for (int i = 0; i < sana.length()/2 + 2; i++) {
            
            char iM = sana.charAt(i);
            char jM = sana.charAt(j);
            
            if (!onVokaali(iM)) {
                if (iM == iEd) {
                    return "10-4";
                }
                iC = iM;
            } else if (ediOnV) {
                
                if (iV == 'u' && iM == 'o') {
                    return "10-4";
                }
                
                iV = iM;
            } else {
                iV = iM;
            }

            if (!onVokaali(jM)) {
                if (jM == jEd) {
                    return "10-4";
                }
                jC = jM;
            } else if (edjOnV) {
                if (jV == 'o' && jM == 'u') {
                    return "10-4";
                }
                
                jV = jM;
            } else {
                jV = jM;
            }
            
            for (int k = 0; k < vierasp.length; k++) {
                if (sana.charAt(i) == vierasp[k]|| sana.charAt(j)== vierasp[k]) {
                    vierasperaisia++;
                }
            }
            
            if (vierasperaisia >= 2) {
                return "QAQ";
            }
            
//            if (j < 5) {
//                suffiksiautomaatti(j, sana.charAt(j));
//            } else {
//                if (sufTila == false) {
//                    return "QAQ";
//                }
//            }
            
            
            
            j--;
        }
        
        return "10-4";
    }
    
    public static void suffiksiautomaatti(int j, char merkki) {
        if (j == 0) {
            sufTila = true;
        }
        
        if (sufTila == false) {
            return;
        }
        
        if (j == 1) {
            if (!onVokaali(merkki)) {
                sufTila = true;
                edellinenKonsonantti = merkki;
            }
        }
        
        if (j == 2) {
            if (merkki == edellinenKonsonantti) {
                sufTila = true;
            }
        }
        
        if (j == 3) {
            if (onVokaali(merkki)) {
                sufTila = true;
                edellinenVokaali = merkki;
            }
        }
        
        if (j == 4) {
            if (merkki == edellinenVokaali) {
                sufTila = true;
            }
        }
    }
    
    public static boolean onVokaali(char merkki) {
        for (int i = 0; i < vokaalit.length; i++) {
            if (merkki == vokaalit[i]) {
                return true;
            }
        }
        return false;
    }
    
}

Test details

Test 1

Group: 1

Verdict:

input
100000
6 9 3 3
1 3 1 1
3 3 6 9
2 2 4 4
...

correct output
10-4
10-4
10-4
10-4
QAQ
...

user output
QAQ
QAQ
QAQ
QAQ
QAQ
...

Test 2

Group: 2

Verdict:

input
100000
270 90 90 90
372 914 438 84
304 152 152 304
238 238 714 238
...

correct output
10-4
QAQ
10-4
10-4
10-4
...

user output
10-4
10-4
10-4
10-4
10-4
...

Test 3

Group: 3

Verdict:

input
100000
821863964 821863964 821863964 ...

correct output
10-4
10-4
QAQ
10-4
10-4
...

user output
10-4
10-4
10-4
10-4
10-4
...