提出 #63304528


ソースコード 拡げる

import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.NoSuchElementException;

class Main {
    public static void main(String[] args) {
        FastScanner sc = new FastScanner();

        int N = sc.nextInt();
        int X = sc.nextInt();

        long[] U = new long[N+1];
        long[] D = new long[N+1];
        for (int i = 1; i <= N; i++) {
            U[i] = sc.nextInt();
            D[i] = sc.nextInt();
        }

        Pair[] pairs = new Pair[N];
        for (int i = 1; i <= N; i++) {
            pairs[i-1] = new Pair(U[i],i);
        }
        Arrays.sort(pairs);

        long answer = 0;
        for (int i = 0; i < N; i++) {
            int index = pairs[i].b;

            L:{
                if (index > 1){
                    if (U[index-1] - U[index] > X){
                        answer += U[index-1] - U[index] - X;
                        U[index-1] = U[index] + X;
                    }
                }
            }
            R:{
                if (index < N){
                    if (U[index+1] - U[index] > X){
                        answer += U[index+1] - U[index] - X;
                        U[index+1] = U[index] + X;
                    }
                }
            }
        }

        long H = 900000000000000L;
        for (int i = 1; i <= N; i++) {
            H = Math.min(H,U[i] + D[i]);
        }

        for (int i = 1; i <= N; i++) {
            answer += (U[i] + D[i] - H);
        }

        System.out.println(answer);

        MyWriter.flush();
    }

    static class Pair implements Comparable<Pair>{
        long a;
        int b;
        public Pair(long A,int B){
            a = A;
            b = B;
        }

        @Override
        public int compareTo(Pair o) {
            return Long.compare(a,o.a);
        }
    }

    private static class MyWriter{
        static StringBuilder sb = new StringBuilder();
        protected static void flush(){
            System.out.print(sb);
            sb = new StringBuilder();
        }
        protected static void println(){
            sb.append("\n");
        }
        protected static void println(int i){
            sb.append(i).append("\n");
        }
        protected static void println(long l) {
            sb.append(l).append("\n");
        }
        protected static void println(double d) {
            sb.append(d).append("\n");
        }
        protected static void println(float f) {
            sb.append(f).append("\n");
        }
        protected static void println(char c) {
            sb.append(c).append("\n");
        }
        protected static void println(boolean b) {
            sb.append(b).append("\n");
        }
        protected static void println(Object obj) {
            String s = String.valueOf(obj);
            sb.append(s).append("\n");
        }
        protected static void print(int i){
            sb.append(i);
        }
        protected static void print(long l) {
            sb.append(l);
        }
        protected static void print(double d) {
            sb.append(d);
        }
        protected static void print(float f) {
            sb.append(f);
        }
        protected static void print(char c) {
            sb.append(c);
        }
        protected static void print(boolean b) {
            sb.append(b);
        }
        protected static void print(Object obj) {
            String s = String.valueOf(obj);
            sb.append(s);
        }

        protected static void printInv(long a,long b,long MOD){
            a %= MOD;
            b %= MOD;
            println((a * invGcd(b,MOD)[1])%MOD);
        }
        private static long safeMod(long x, long m){
            x %= m;
            if(x<0) x += m;
            return x;
        }
        private static long[] invGcd(long a, long b){
            a = safeMod(a, b);
            if(a==0) return new long[]{b,0};

            long s=b, t=a;
            long m0=0, m1=1;
            while(t>0){
                long u = s/t;
                s -= t*u;
                m0 -= m1*u;
                long tmp = s; s = t; t = tmp;
                tmp = m0; m0 = m1; m1 = tmp;
            }
            if(m0<0) m0 += b/s;
            return new long[]{s,m0};
        }
        public static long writerGcd(long... a){
            if(a.length == 0) return 0;
            long r = Math.abs(a[0]);
            for(int i=1; i<a.length; i++){
                if(a[i]!=0) {
                    if(r==0) r = Math.abs(a[i]);
                    else r = invGcd(r, Math.abs(a[i]))[0];
                }
            }
            return r;
        }
    }

    private static 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();
                }
                return buflen > 0;
            }
        }

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

        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() {
            long nl = nextLong();
            if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE) throw new NumberFormatException();
            return (int) nl;
        }

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

提出情報

提出日時
問題 F - Smooth Occlusion
ユーザ AAH_tomato
言語 Java (OpenJDK 17)
得点 0
コード長 7303 Byte
結果 WA
実行時間 423 ms
メモリ 63544 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 500
結果
AC × 4
AC × 26
WA × 43
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt, 01_random_65.txt, 01_random_66.txt, 01_random_67.txt, 01_random_68.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 38 ms 34464 KiB
00_sample_01.txt AC 39 ms 34252 KiB
00_sample_02.txt AC 34 ms 34328 KiB
00_sample_03.txt AC 35 ms 34372 KiB
01_random_04.txt WA 313 ms 47952 KiB
01_random_05.txt WA 330 ms 59364 KiB
01_random_06.txt WA 336 ms 59308 KiB
01_random_07.txt WA 346 ms 47860 KiB
01_random_08.txt AC 392 ms 49220 KiB
01_random_09.txt AC 316 ms 59344 KiB
01_random_10.txt WA 338 ms 59452 KiB
01_random_11.txt WA 388 ms 48176 KiB
01_random_12.txt WA 334 ms 59280 KiB
01_random_13.txt WA 352 ms 49296 KiB
01_random_14.txt AC 331 ms 58804 KiB
01_random_15.txt AC 341 ms 59300 KiB
01_random_16.txt WA 381 ms 48952 KiB
01_random_17.txt WA 319 ms 48808 KiB
01_random_18.txt WA 363 ms 48072 KiB
01_random_19.txt WA 390 ms 48308 KiB
01_random_20.txt WA 308 ms 48160 KiB
01_random_21.txt AC 336 ms 59460 KiB
01_random_22.txt WA 359 ms 49156 KiB
01_random_23.txt WA 323 ms 59416 KiB
01_random_24.txt WA 338 ms 59220 KiB
01_random_25.txt WA 363 ms 48060 KiB
01_random_26.txt WA 337 ms 59392 KiB
01_random_27.txt AC 407 ms 47868 KiB
01_random_28.txt WA 379 ms 48704 KiB
01_random_29.txt WA 292 ms 58400 KiB
01_random_30.txt WA 379 ms 47916 KiB
01_random_31.txt WA 363 ms 48212 KiB
01_random_32.txt WA 331 ms 59404 KiB
01_random_33.txt AC 350 ms 47484 KiB
01_random_34.txt WA 315 ms 47636 KiB
01_random_35.txt WA 256 ms 58740 KiB
01_random_36.txt WA 127 ms 40328 KiB
01_random_37.txt AC 68 ms 36080 KiB
01_random_38.txt WA 167 ms 42484 KiB
01_random_39.txt WA 245 ms 58296 KiB
01_random_40.txt WA 105 ms 38196 KiB
01_random_41.txt AC 150 ms 41464 KiB
01_random_42.txt WA 194 ms 63544 KiB
01_random_43.txt WA 164 ms 42264 KiB
01_random_44.txt WA 255 ms 46336 KiB
01_random_45.txt AC 123 ms 41480 KiB
01_random_46.txt AC 117 ms 46576 KiB
01_random_47.txt AC 121 ms 46600 KiB
01_random_48.txt AC 147 ms 47556 KiB
01_random_49.txt AC 138 ms 46780 KiB
01_random_50.txt AC 125 ms 46488 KiB
01_random_51.txt WA 318 ms 59280 KiB
01_random_52.txt WA 371 ms 49452 KiB
01_random_53.txt WA 333 ms 59292 KiB
01_random_54.txt WA 364 ms 49440 KiB
01_random_55.txt WA 323 ms 53800 KiB
01_random_56.txt WA 346 ms 47876 KiB
01_random_57.txt WA 309 ms 48508 KiB
01_random_58.txt WA 366 ms 47908 KiB
01_random_59.txt WA 330 ms 59328 KiB
01_random_60.txt WA 324 ms 49428 KiB
01_random_61.txt AC 373 ms 48520 KiB
01_random_62.txt WA 263 ms 47584 KiB
01_random_63.txt AC 423 ms 48564 KiB
01_random_64.txt AC 392 ms 49248 KiB
01_random_65.txt AC 317 ms 48284 KiB
01_random_66.txt AC 323 ms 48040 KiB
01_random_67.txt AC 39 ms 34280 KiB
01_random_68.txt AC 37 ms 34444 KiB