Submission #63253494


Source Code Expand

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[] A = new int[N];
        for (int i = 0; i < N; i++) {
            A[i] = sc.nextInt();
        }
        int[] I = new int[1000001];
        Arrays.fill(I,-1);

        int answer = 2000000000;
        for (int i = 0; i < N; i++) {
            if (I[A[i]] != -1){
                answer = Math.min(answer,i - I[A[i]] + 1);
            }else {
                I[A[i]] = i;
            }
        }

        if (answer == 2000000000){
            System.out.println(-1);
        }else {
            System.out.println(answer);
        }

        MyWriter.flush();
    }

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

Submission Info

Submission Time
Task C - Shortest Duplicate Subarray
User AAH_tomato
Language Java (OpenJDK 17)
Score 300
Code Size 6263 Byte
Status AC
Exec Time 101 ms
Memory 41960 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 53
Set Name Test Cases
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-random-001.txt, 01-random-002.txt, 01-random-003.txt, 01-random-004.txt, 01-random-005.txt, 01-random-006.txt, 01-random-007.txt, 01-random-008.txt, 01-random-009.txt, 01-random-010.txt, 01-random-011.txt, 01-random-012.txt, 01-random-013.txt, 01-random-014.txt, 01-random-015.txt, 02-small-001.txt, 02-small-002.txt, 02-small-003.txt, 02-small-004.txt, 02-small-005.txt, 02-small-006.txt, 02-small-007.txt, 02-small-008.txt, 02-small-009.txt, 02-small-010.txt, 02-small-011.txt, 02-small-012.txt, 02-small-013.txt, 02-small-014.txt, 02-small-015.txt, 03-large-001.txt, 03-large-002.txt, 03-large-003.txt, 03-large-004.txt, 03-large-005.txt, 03-large-006.txt, 03-large-007.txt, 03-large-008.txt, 03-large-009.txt, 03-large-010.txt, 03-large-011.txt, 03-large-012.txt, 03-large-013.txt, 03-large-014.txt, 03-large-015.txt, 03-large-016.txt, 03-large-017.txt, 03-large-018.txt, 03-large-019.txt, 03-large-020.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 47 ms 38300 KiB
00-sample-002.txt AC 47 ms 38608 KiB
00-sample-003.txt AC 48 ms 38352 KiB
01-random-001.txt AC 90 ms 40428 KiB
01-random-002.txt AC 89 ms 40504 KiB
01-random-003.txt AC 83 ms 40060 KiB
01-random-004.txt AC 85 ms 40632 KiB
01-random-005.txt AC 83 ms 40160 KiB
01-random-006.txt AC 91 ms 40000 KiB
01-random-007.txt AC 80 ms 40344 KiB
01-random-008.txt AC 83 ms 41028 KiB
01-random-009.txt AC 93 ms 41632 KiB
01-random-010.txt AC 70 ms 39732 KiB
01-random-011.txt AC 73 ms 39536 KiB
01-random-012.txt AC 72 ms 39972 KiB
01-random-013.txt AC 70 ms 39304 KiB
01-random-014.txt AC 67 ms 39280 KiB
01-random-015.txt AC 68 ms 39560 KiB
02-small-001.txt AC 46 ms 38328 KiB
02-small-002.txt AC 47 ms 38472 KiB
02-small-003.txt AC 48 ms 38540 KiB
02-small-004.txt AC 47 ms 38280 KiB
02-small-005.txt AC 47 ms 38604 KiB
02-small-006.txt AC 51 ms 38272 KiB
02-small-007.txt AC 49 ms 38648 KiB
02-small-008.txt AC 52 ms 38476 KiB
02-small-009.txt AC 51 ms 38344 KiB
02-small-010.txt AC 47 ms 38476 KiB
02-small-011.txt AC 47 ms 38272 KiB
02-small-012.txt AC 51 ms 38276 KiB
02-small-013.txt AC 47 ms 38380 KiB
02-small-014.txt AC 47 ms 38584 KiB
02-small-015.txt AC 47 ms 38356 KiB
03-large-001.txt AC 78 ms 40720 KiB
03-large-002.txt AC 89 ms 40568 KiB
03-large-003.txt AC 95 ms 41300 KiB
03-large-004.txt AC 87 ms 40328 KiB
03-large-005.txt AC 95 ms 40996 KiB
03-large-006.txt AC 89 ms 40852 KiB
03-large-007.txt AC 86 ms 40804 KiB
03-large-008.txt AC 93 ms 41236 KiB
03-large-009.txt AC 91 ms 41048 KiB
03-large-010.txt AC 93 ms 41464 KiB
03-large-011.txt AC 96 ms 40476 KiB
03-large-012.txt AC 86 ms 41320 KiB
03-large-013.txt AC 101 ms 41960 KiB
03-large-014.txt AC 93 ms 40792 KiB
03-large-015.txt AC 97 ms 40952 KiB
03-large-016.txt AC 80 ms 40144 KiB
03-large-017.txt AC 77 ms 40368 KiB
03-large-018.txt AC 93 ms 40816 KiB
03-large-019.txt AC 91 ms 40872 KiB
03-large-020.txt AC 88 ms 40312 KiB