結果

問題 No.2298 yukicounter
ユーザー AsahiAsahi
提出日時 2023-05-14 22:43:21
言語 Java21
(openjdk 21)
結果
WA  
実行時間 -
コード長 7,987 bytes
コンパイル時間 2,714 ms
コンパイル使用メモリ 82,648 KB
実行使用メモリ 67,380 KB
最終ジャッジ日時 2024-05-07 15:13:10
合計ジャッジ時間 9,390 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 117 ms
54,136 KB
testcase_01 AC 104 ms
53,040 KB
testcase_02 AC 113 ms
53,908 KB
testcase_03 AC 256 ms
60,172 KB
testcase_04 AC 196 ms
57,148 KB
testcase_05 AC 142 ms
56,064 KB
testcase_06 AC 261 ms
62,172 KB
testcase_07 AC 194 ms
57,596 KB
testcase_08 AC 169 ms
57,196 KB
testcase_09 AC 181 ms
57,352 KB
testcase_10 AC 134 ms
55,896 KB
testcase_11 AC 186 ms
57,796 KB
testcase_12 AC 184 ms
57,588 KB
testcase_13 AC 210 ms
57,848 KB
testcase_14 AC 212 ms
57,764 KB
testcase_15 AC 121 ms
54,000 KB
testcase_16 AC 184 ms
57,176 KB
testcase_17 AC 154 ms
57,140 KB
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 AC 226 ms
57,772 KB
testcase_23 AC 217 ms
57,800 KB
testcase_24 AC 326 ms
67,380 KB
testcase_25 AC 258 ms
60,268 KB
testcase_26 AC 211 ms
57,900 KB
testcase_27 AC 280 ms
64,316 KB
testcase_28 AC 205 ms
57,660 KB
testcase_29 AC 191 ms
57,008 KB
testcase_30 AC 134 ms
53,960 KB
testcase_31 AC 184 ms
57,124 KB
testcase_32 AC 197 ms
57,532 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;
import java.io.*;
import java.math.*;

class Main
{       
    void solver(){   
        String s = in.next();
        String yc = "yukicoder";
        Map<Integer,Integer> pos = new TreeMap<>();
        for(int i = 0 ; i < s.length() - 8; i ++ ) {
            String cut = s.substring(i,i+9);
            if(cut.equals(yc)) {
                pos.put(i,i+9);
            }
        }
        int ans = 0;
        int chain = 1;
        int front = 1010101010;
        for(int start : pos.keySet()) {
            int end = pos.get(start);
            if(front == start) {
                ans = Math.max(ans,++chain);
            }
            else{
                chain = 1;
            }
            front = end;
        }
        out.print(ans);
    }
    
    public static void main(String[] args){
        out = new PrintWriter(System.out);
        in  = new In();
        lr  = new Library();
        new Main().solver();
        out.flush();
    }

    private static PrintWriter out;
    private static In in;
    private static Library lr ;

}

class Library {

    final int Inf = 1000000000;
    final long Lnf = 1000000000000000000L;
    final int [] X4 = {0,1,0,-1};
    final int [] Y4 = {-1,0,1,0};
    final int [] X8 = {-1,-1,0,1,1,1,0,-1};
    final int [] Y8 = {0,1,1,1,0,-1,-1,-1};
    final long MOD7 = 1000000007;
    final long MOD9 = 998244353 ;
    
    /*
     * エラトステネスの篩 O(NlogN) 
     * 素数リストを返します。
     */
    boolean [] Eratosthenes(){
        int limit = 10101010;
        boolean [] isprime = new boolean[limit+1];
        Arrays.fill(isprime,true);
        isprime[0] = false;
        isprime[1] = false;
        for(int i = 2 ; i <= limit ; i++ ){
            if(!isprime[i]) continue;
            for(int j = i*2 ; j <= limit ; j += i ){
                isprime[j] = false;
            }
        }
        return isprime;
    }
    /*
     * upper_bound O(logN)
     * keyより大きいインデックスを返します。
     */
    int upper_bound(int [] A , int key) {
        int left = 0;
        int right = A.length;
        while(left < right) {
            int mid = (left + right) / 2;
            if(A[mid] <= key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    int upper_bound(long [] A , long key) {
        int left = 0;
        int right = A.length;
        while(left < right) {
            int mid = (left + right) / 2;
            if(A[mid] <= key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    int upper_bound(ArrayList<Integer> A , int key) {
        int left = 0;
        int right = A.size();
        while(left < right) {
            int mid = (left + right) / 2;
            if(A.get(mid) <= key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    int upper_bound(ArrayList<Long> A , long key) {
        int left = 0;
        int right = A.size();
        while(left < right) {
            int mid = (left + right) / 2;
            if(A.get(mid) <= key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    /*
     * lower_bound O(logN)
     * key以下のインデックスを返します。
     */
    int lower_bound(int [] A , int key) {
        int left = 0;
        int right = A.length;
        while(left < right) {
            int mid = (left + right) / 2;
            if(A[mid] < key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    int lower_bound(long [] A , long key) {
        int left = 0;
        int right = A.length;
        while(left < right) {
            int mid = (left + right) / 2;
            if(A[mid] < key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    int lower_bound(ArrayList<Integer> A, int key) {
        int left = 0;
        int right = A.size();
        while(left < right) {
            int mid = (left + right) / 2;
            if(A.get(mid) < key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
    int lower_bound(ArrayList<Long> A, long key) {
        int left = 0;
        int right = A.size();
        while(left < right) {
            int mid = (left + right) / 2;
            if(A.get(mid) < key) left = mid + 1;
            else right = mid;
        }
        return right;
    }
}

class In{

    private final InputStream in = System.in;
    private static final Scanner sc = new Scanner(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 static boolean isPrintableChar(int c) { 
        return 33 <= c && c <= 126;
    }

    public boolean hasNext() { 
        while(hasNextByte() && !isPrintableChar(buffer[ptr])) {
            ptr++; 
        }
        return hasNextByte();
    }

    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();
    }

    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();
        }
    }

    int nextInt() {
        long nl = nextLong();
        if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE) throw new NumberFormatException();
        return (int) nl;
    }

    double nextDouble() { 
        return Double.parseDouble(next());
    }

    BigInteger nextBigInteger() {
        return sc.nextBigInteger();
    }

    BigDecimal nextBigDecimal() {
        return sc.nextBigDecimal();
    }

    int [] IntArray(int n) {
        final int [] Array = new int [n];
        for(int i = 0 ; i < n ; i ++ ) {
            Array[i] = nextInt();
        }
        return Array;
    }

    int [][] IntArray(int n , int m) {
        final int [][] Array = new int [n][m];
        for(int i = 0 ; i < n ; i ++ ) {
            Array[i] = IntArray(m);
        }
        return Array;
    }   

    long [] LongArray(int n) {
        final long [] Array = new long [n];
        for(int i = 0 ; i < n ; i ++ ) {
            Array[i] = nextLong();
        }
        return Array;
    }

    long [][] LongArray(int n , int m) {
        final long [][] Array = new long [n][m];
        for(int i = 0 ; i < n ; i ++ ) {
            Array[i] = LongArray(m);
        }
        return Array;
    }

    String [] StringArray(int n) {
        final String [] Array = new String [n];
        for(int i = 0 ; i < n ; i ++ ) {
            Array[i] = next();
        }
        return Array;
    }

    char [][] CharArray(int n , int m) {
        final char [][] Array = new char [n][m];
        for(int i = 0 ; i < n ; i ++ ) {
            Array[i] = next().toCharArray();
        }
        return Array;
    }

}


0