# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
229932 | 2020-05-07T07:28:05 Z | frodakcin | Editor (BOI15_edi) | C++11 | 6 ms | 768 KB |
#include <cstdio> #include <cstring> #include <set> #include <functional> #include <vector> const int MN = 3e3+10; int N, a[MN], b[MN][20], d[MN]; bool e[MN]; std::set<int, std::greater<int>, std::allocator<int> > f; std::vector<int> c[MN]; void dfs(int n, int v) { d[n]=v; for(int x:c[n]) dfs(x, v); } int main(void) { scanf("%d", &N); for(int i=0;i<N;++i) scanf("%d", a+i); memset(b, -1, sizeof b); for(int i=0,j,x;i<N;++i) { if(a[i]<0) { j=0, x=i-1; for(;~b[x][j];++j); for(--j;j>=0&&~b[x][j]&&a[b[x][j]] <= a[i];--j) x=b[x][j]; if(a[x] <= a[i]) x=b[x][0]; //printf("%d -> %d\n", i, x); c[x].push_back(i); b[i][0] = x-1; for(j=0;~b[i][j]&&~b[b[i][j]][j];++j) b[i][j+1]=b[b[i][j]][j]; } } for(int i=0;i<N;++i) if(a[i]>=0) dfs(i, i); for(int i=0;i<N;++i) { if(e[d[i]]) f.erase(d[i]); else f.insert(d[i]); e[d[i]]^=1; if(f.empty()) printf("0\n"); else printf("%d\n", a[*f.begin()]); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 5 ms | 640 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 5 ms | 384 KB | Time limit exceeded (wall clock) |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 768 KB | Unexpected end of file - int32 expected |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 5 ms | 640 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |