結果

問題 No.380 悪の台本
ユーザー nCk_cv
提出日時 2016-10-20 12:32:38
言語 Java8
(openjdk 1.8.0.222)
結果
AC  
実行時間 765 ms
コード長 4,584 Byte
コンパイル時間 1,687 ms
使用メモリ 30,592 KB
最終ジャッジ日時 2019-10-08 13:55:28

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
challenge01.txt AC 111 ms
21,160 KB
hand AC 116 ms
21,260 KB
sample1 AC 114 ms
21,152 KB
sample2 AC 114 ms
21,360 KB
test1 AC 203 ms
26,848 KB
test2 AC 251 ms
26,876 KB
test3 AC 245 ms
26,876 KB
test4 AC 765 ms
26,796 KB
test5 AC 195 ms
30,592 KB
test6 AC 216 ms
26,852 KB
テストケース一括ダウンロード

ソースコード

diff #
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
public class Main {
	static long MOD = 2 << 29;
	public static void main(String[] args) {
		FastScanner sc = new FastScanner();
		Scanner scc = new Scanner(System.in);
		while(scc.hasNextLine()) {
			String in = scc.nextLine();
			//System.out.println(in);
			String[] str = in.split(" ");
			
			String who = str[0];
			String[] nex = new String[1];
			nex[0] = "";
			for(int i = 1; i < str.length; i++) {
				nex[0] += str[i];
			}
			str = nex;
			//System.out.println(str[0] + " " + who);
			boolean ok = false;
			if(str[0].equals("")) {
				ok = false;
			}
			else if(who.equals("digi")) {
				ok = isOk("nyo",str);
			}
			else if(who.equals("petit")) {
				ok = isOk("nyu",str);
			}
			else if(who.equals("rabi")) {
				ok = isOk(str);
			}
			else if(who.equals("gema")) {
				ok = isOk("gema",str);
			}
			else if(who.equals("piyo")) {
				ok = isOk("pyo",str);
			}
			if(ok) {
				System.out.println("CORRECT (maybe)");
			}
			else {
				System.out.println("WRONG!");
			}
		}
	}
	static boolean isOk(String check, String[] str) {
		String s = str[str.length-1];
		for(int i = 0; i < 3; i++) {
			if(s.length() < check.length()) return false;
			if(isA(s.charAt(s.length()-1))) {
				s = s.substring(0,s.length()-1);
			}
			else {
				break;
			}
			if(s.length() < check.length()) return false;
		}
		if(isA(s.charAt(s.length()-1))) return false;
		s = s.toLowerCase();
		//System.out.println(s);
		for(int i = 0; i < check.length(); i++) {
			if(check.charAt(check.length() - i - 1) != s.charAt(s.length() - i - 1)) return false;
		}
		return true;
		
		
	}
	static boolean isOk(String[] str) {
		for(int i = 0; i < str.length; i++) {
			for(int j = 0; j < str[i].length(); j++) {
				if(!isA(str[i].charAt(j))) return true;
			}
		}
		return false;
	}
	
	
	static boolean isA(char a) {
		if(a >= 'a' && a <= 'z') return false;
		if(a >= 'A' && a <= 'Z') return false;
		if(a >= '0' && a <= '9') return false;
		return true;
	}
	
	
}

class FastScanner {
    private final InputStream in = System.in;
    private final byte[] buffer = new byte[1024];
    private int ptr = 0;
    private int buflen = 0;
    private boolean hasNextByte() {
        if (ptr < buflen) {
            return true;
        }else{
            ptr = 0;
            try {
                buflen = in.read(buffer);
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (buflen <= 0) {
                return false;
            }
        }
        return true;
    }
    private int readByte() { if (hasNextByte()) return buffer[ptr++]; else return -1;}
    private boolean isPrintableChar(int c) { return 33 <= c && c <= 126;}
    private void skipUnprintable() { while(hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++;}
    public boolean hasNext() { skipUnprintable(); return hasNextByte();}
    public String next() {
        if (!hasNext()) throw new NoSuchElementException();
        StringBuilder sb = new StringBuilder();
        int b = readByte();
        while(isPrintableChar(b)) {
            sb.appendCodePoint(b);
            b = readByte();
        }
        return sb.toString();
    }
    public long nextLong() {
        if (!hasNext()) throw new NoSuchElementException();
        long n = 0;
        boolean minus = false;
        int b = readByte();
        if (b == '-') {
            minus = true;
            b = readByte();
        }
        if (b < '0' || '9' < b) {
            throw new NumberFormatException();
        }
        while(true){
            if ('0' <= b && b <= '9') {
                n *= 10;
                n += b - '0';
            }else if(b == -1 || !isPrintableChar(b)){
                return minus ? -n : n;
            }else{
                throw new NumberFormatException();
            }
            b = readByte();
        }
    }
    public int nextInt() {
        if (!hasNext()) throw new NoSuchElementException();
        int n = 0;
        boolean minus = false;
        int b = readByte();
        if (b == '-') {
            minus = true;
            b = readByte();
        }
        if (b < '0' || '9' < b) {
            throw new NumberFormatException();
        }
        while(true){
            if ('0' <= b && b <= '9') {
                n *= 10;
                n += b - '0';
            }else if(b == -1 || !isPrintableChar(b)){
                return minus ? -n : n;
            }else{
                throw new NumberFormatException();
            }
            b = readByte();
        }
    }
}
0