Submission #915126


Source Code Expand

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

/**
 * http://arc060.contest.atcoder.jp/tasks/arc060_c
 * 
 * @author Cummin
 */
public class Main {
        static int N ;  // 2 <= N <= 10^5
        static long L ; // 1 <= L <= 10^9
        static int Q ;  // 2 <= Q <= 10^5
        static int X[] ;// 1 <= X <= 10^9, X[0..N-1]
        static int DP[] ; // 次に行ける最も遠いホテルを記録する
        
        public static void main(String[] args) {
//        System.out.printf("At Coder ARC060 問題E \n") ;
long start = System.currentTimeMillis();         
        X = fast_read(1) ;
        N = X[0] ;
        X = fast_read(N) ;
        int Y[] ;
        Y = fast_read(2) ;
        L = Y[0] ;
        Q = Y[1] ;
        int Qs[][] = new int[Q][2] ; // Qs[][from] < Qs[][to]
        for (int i=0 ; i<Q ; i++) {
            int from, to ;
            Y = fast_read(2) ;
            from = Y[0] ;
            to   = Y[1] ;
            if (from>to) {
                int t ;
                t = from; from = to ; to = t ;
            }
            Qs[i][0] = from - 1 ;
            Qs[i][1] = to - 1 ;
        }
long end = System.currentTimeMillis();
//System.out.println((end - start)  + "ms");

        DP = new int[N] ;

        ////// 出力も高速に ////////////////
        PrintWriter out = new PrintWriter(System.out);
        for (int i = 0; i < Q; i++) {
            //out.println(Solve2(Qs[i][0], Qs[i][1]));
            out.println(Solve3(Qs[i][0], Qs[i][1]));
        }
        out.flush();
        //////////////////////////////
    }

    static int Solve2(int from, int to) {
        int cnt = 1 ;
        int ptr = from+1 ;
        while (ptr<=to) {
            if ((X[ptr]-X[from])<=L) {
                ptr++ ;
            } else {
                from = ptr -1 ;
                cnt ++ ;
            }
        }
        return cnt ;
    }
    
    static int Solve3(int from, int to) {
        if (from>=to) return 0 ;
        if (DP[from]!=0) {
            return Solve3(DP[from],to) +1 ;
        } else {
            int ptr = from+1 ;
            while (ptr<=to) {
                if ((X[ptr]-X[from])<=L) {
                    ptr++ ;
                } else {
                    DP[from] = ptr - 1 ;
                    break ;
                }
            }
            return Solve3(ptr - 1, to) + 1;
        }
        
    }
    

    //////////////// 高速読み込み //////////////////////
    
    static int[] fast_read(int N) {
        int elements[] = new int[N];
        int e_cnt = 0;
        char c;
        while (e_cnt < N) {
            c = get_char() ;
            if ((c < '0') || ('9' < c)) {
                continue; // Skip 非数値文字
            }
            elements[e_cnt] = 0;
            while (('0' <= c) && (c <= '9')) {  // 数値文字を変換する
                elements[e_cnt] = elements[e_cnt] * 10 + (int) c - '0';
                c = get_char() ;
            }
//            System.out.printf("\nelement[%d] = %d \n", e_cnt + 1, elements[e_cnt]);
            e_cnt++;
        }
        return elements;
    }
    
    ///////////////// get_char() /////////////////////////////////
    //static char c_buf[] = new char[1024*1024];
    static byte c_buf[] = new byte[1024*1024];
    static int ptr = 0 ;
    static int c_len = 0 ;
    //static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static InputStream ins = System.in;

    static char get_char() {
        char ret;

        if (ptr >= c_len) {
            try {
                //c_len = br.read(c_buf);
                c_len = ins.read(c_buf);
            } catch (IOException ex) {
               ex.printStackTrace();
               System.exit(-1); // 終了する
            }
            ptr = 0;
        }
        ret = (char) c_buf[ptr];
        ptr++;
        return ret;
    }
}

Submission Info

Submission Time
Task E - Tak and Hotels
User Cummin
Language Java7 (OpenJDK 1.7.0)
Score 200
Code Size 4045 Byte
Status TLE
Exec Time 3157 ms
Memory 23604 KiB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 200 / 200 0 / 500
Status
AC × 1
AC × 14
AC × 21
TLE × 6
Set Name Test Cases
Sample example_01.txt
Subtask1 example_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt
All example_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt
Case Name Status Exec Time Memory
example_01.txt AC 100 ms 8912 KiB
subtask1_01.txt AC 100 ms 8912 KiB
subtask1_02.txt AC 100 ms 8912 KiB
subtask1_03.txt AC 129 ms 10864 KiB
subtask1_04.txt AC 127 ms 10688 KiB
subtask1_05.txt AC 130 ms 10948 KiB
subtask1_06.txt AC 113 ms 9672 KiB
subtask1_07.txt AC 119 ms 9600 KiB
subtask1_08.txt AC 134 ms 10560 KiB
subtask1_09.txt AC 128 ms 10688 KiB
subtask1_10.txt AC 136 ms 10816 KiB
subtask1_11.txt AC 125 ms 10560 KiB
subtask1_12.txt AC 133 ms 10560 KiB
subtask1_13.txt AC 126 ms 10564 KiB
subtask2_01.txt AC 1410 ms 23144 KiB
subtask2_02.txt TLE 3157 ms 21448 KiB
subtask2_03.txt AC 552 ms 22904 KiB
subtask2_04.txt AC 917 ms 18220 KiB
subtask2_05.txt AC 881 ms 19288 KiB
subtask2_06.txt AC 1840 ms 21848 KiB
subtask2_07.txt AC 2105 ms 23604 KiB
subtask2_08.txt TLE 3157 ms 22076 KiB
subtask2_09.txt TLE 3157 ms 22476 KiB
subtask2_10.txt TLE 3157 ms 20736 KiB
subtask2_11.txt TLE 3157 ms 21080 KiB
subtask2_12.txt TLE 3157 ms 23136 KiB
subtask2_13.txt AC 1457 ms 21832 KiB