ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FESTIVAL 록 페스티벌 / algospot.com
    ALGOSPOT 2020. 1. 28. 11:12
    728x90

    문제링크 : https://algospot.com/judge/problem/read/FESTIVAL
    제출링크 : https://algospot.com/judge/submission/detail/653190
    자바 소스 : https://github.com/skysign/WSAPT/blob/master/algospot.com/FESTIVAL/src/Main.java

    문제는 2가지 기법을 묻는 문제입니다.

    import java.io.DataInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Scanner;
    
    /**
     * FESTIVAL 록 페스티벌 / algospot.com
     * 문제링크 : https://algospot.com/judge/problem/read/FESTIVAL
     * 제출링크 : https://algospot.com/judge/submission/detail/653190
     */
    public class Main {
        public static void main(String[] args) throws IOException {
    //        Scanner sc = new Scanner(System.in);
            Reader sc = new Reader();
            int T = sc.nextInt();
    
            for(int t=0; t<T; ++t) {
                int N = sc.nextInt();
                int band = sc.nextInt();
                int[] cs = new int[N+1];
                for(int n=1; n<=N; ++n) {
                    cs[n] = sc.nextInt();
                }
                solve(N, band, cs);
            }
        }
    
        public static void solve(int N, int band, int[] cs) {
            int[] prefixSum = new int[N+1];
    
            for(int i=1; i<=N; ++i) {
                prefixSum[i] = cs[i] + prefixSum[i-1];
            }
    
            double mean = Integer.MAX_VALUE;
            for(int b=band; b<=N; ++b) {
                for(int i=1; i<=N-b+1; ++i) {
                    int beg = i;
                    int end = i+b-1;
                    int sum = prefixSum[end] - prefixSum[beg-1];
    
                    mean = Math.min(mean, (double)sum/(double)b);
                }
            }
    
            System.out.println(mean);
        }
    
        // https://www.geeksforgeeks.org/fast-io-in-java-in-competitive-programming/
        static class Reader
        {
            final private int BUFFER_SIZE = 1 << 16;
            private DataInputStream din;
            private byte[] buffer;
            private int bufferPointer, bytesRead;
    
            public Reader()
            {
                din = new DataInputStream(System.in);
                buffer = new byte[BUFFER_SIZE];
                bufferPointer = bytesRead = 0;
            }
    
            public Reader(String file_name) throws IOException
            {
                din = new DataInputStream(new FileInputStream(file_name));
                buffer = new byte[BUFFER_SIZE];
                bufferPointer = bytesRead = 0;
            }
    
            public String nextLine() throws IOException
            {
                byte[] buf = new byte[64]; // line length
                int cnt = 0, c;
                while ((c = read()) != -1)
                {
                    if (c == '\n')
                        break;
                    buf[cnt++] = (byte) c;
                }
                return new String(buf, 0, cnt);
            }
    
            public int nextInt() throws IOException
            {
                int ret = 0;
                byte c = read();
                while (c <= ' ')
                    c = read();
                boolean neg = (c == '-');
                if (neg)
                    c = read();
                do
                {
                    ret = ret * 10 + c - '0';
                }  while ((c = read()) >= '0' && c <= '9');
    
                if (neg)
                    return -ret;
                return ret;
            }
    
            public long nextLong() throws IOException
            {
                long ret = 0;
                byte c = read();
                while (c <= ' ')
                    c = read();
                boolean neg = (c == '-');
                if (neg)
                    c = read();
                do {
                    ret = ret * 10 + c - '0';
                }
                while ((c = read()) >= '0' && c <= '9');
                if (neg)
                    return -ret;
                return ret;
            }
    
            public double nextDouble() throws IOException
            {
                double ret = 0, div = 1;
                byte c = read();
                while (c <= ' ')
                    c = read();
                boolean neg = (c == '-');
                if (neg)
                    c = read();
    
                do {
                    ret = ret * 10 + c - '0';
                }
                while ((c = read()) >= '0' && c <= '9');
    
                if (c == '.')
                {
                    while ((c = read()) >= '0' && c <= '9')
                    {
                        ret += (c - '0') / (div *= 10);
                    }
                }
    
                if (neg)
                    return -ret;
                return ret;
            }
    
            private void fillBuffer() throws IOException
            {
                bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
                if (bytesRead == -1)
                    buffer[0] = -1;
            }
    
            private byte read() throws IOException
            {
                if (bufferPointer == bytesRead)
                    fillBuffer();
                return buffer[bufferPointer++];
            }
    
            public void close() throws IOException
            {
                if (din == null)
                    return;
                din.close();
            }
        }
    }
    
    728x90
Designed by Tistory.