# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
94084 | 2019-01-15T21:02:38 Z | zeyad49 | Teams (CEOI11_tea) | Java 11 | 105 ms | 9988 KB |
import java.io.*; import java.util.*; class Main{ static int INF=(int)1e9; static Integer[]indices; static int n,a[]; static int[][] check(int limit) { int []dp=new int [n+1]; //number of teams int []nxt=new int [n+1]; TreeSet<Integer> cand=new TreeSet(); Deque<Integer> queue=new LinkedList(); cand.add(n); queue.add(n); for(int i=n-1;i>=0;i--) { int x=a[indices[i]]; if(i+x>n) continue; while(!queue.isEmpty()) { int j=queue.peekFirst(); if(j-i>limit) { queue.removeFirst(); cand.remove(j); } else break; } Integer first=cand.ceiling(i+x); if(first==null) continue; dp[i]=dp[first]+1; nxt[i]=first; if(dp[i]>=dp[queue.peekLast()]) { queue.addLast(i); cand.add(i); } // System.out.println(queue); } int [][]ans=new int [2][n]; ans[0]=dp; ans[1]=nxt; return ans; } public static void main(String[] args) throws IOException { InputReader sc=new InputReader(System.in); PrintWriter out=new PrintWriter(System.out); n=sc.nextInt(); indices=new Integer[n]; a=new int [n]; for(int i=0;i<n;i++) { a[i]=sc.nextInt(); indices[i]=i; } Arrays.sort(indices,Comparator.comparingInt(i->-a[i])); int [][]x; x=check(n); int maxTeams=x[0][0]; int best=-1; int lo=1,hi=n; while(lo<=hi) { int mid=lo+hi>>1; x=check(mid); if(x[0][0]==maxTeams) { hi=mid-1; best=mid; } else lo=mid+1; } x=check(best); int []dp=x[0]; int []nxt=x[1]; out.println(dp[0]); Queue list=new Queue(); for(int i=0;i<n;) { // int j=nxt[i]; while(i<j) { list.add(indices[i]+1); i++; } out.print(list.size); while(!list.isEmpty()) out.print(" "+list.poll()); out.println(); } out.close(); } static class Queue { int back,front; int []a; int size=0; public Queue() { a=new int [n]; } public int poll() { size--; return a[back++]; } public void add(int x) { size++; a[front++]=x; } public boolean isEmpty() { return size==0; } } static class InputReader { private InputStream stream; private byte[] buf = new byte[1024]; private int curChar; private int numChars; private InputReader.SpaceCharFilter filter; public InputReader(InputStream stream) { this.stream = stream; } public int read() { if (numChars == -1) { throw new InputMismatchException(); } if (curChar >= numChars) { curChar = 0; try { numChars = stream.read(buf); } catch (IOException e) { throw new InputMismatchException(); } if (numChars <= 0) { return -1; } } return buf[curChar++]; } public int nextInt() { int c = read(); while (isSpaceChar(c)) { c = read(); } int sgn = 1; if (c == '-') { sgn = -1; c = read(); } int res = 0; do { if (c < '0' || c > '9') { throw new InputMismatchException(); } res *= 10; res += c - '0'; c = read(); } while (!isSpaceChar(c)); return res * sgn; } public boolean isSpaceChar(int c) { if (filter != null) { return filter.isSpaceChar(c); } return isWhitespace(c); } public static boolean isWhitespace(int c) { return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1; } public interface SpaceCharFilter { public boolean isSpaceChar(int ch); } } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 80 ms | 9844 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 82 ms | 9788 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 80 ms | 9988 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 79 ms | 9848 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 79 ms | 9564 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 78 ms | 9700 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 82 ms | 9808 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 77 ms | 9768 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 105 ms | 9732 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 79 ms | 9504 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |