# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
46090 | 2018-04-17T08:53:33 Z | grumpy_gordon | Editor (BOI15_edi) | C++17 | 249 ms | 60776 KB |
#include <cstdio> #include <cstdlib> #include <cstdlib> #include <algorithm> #include <vector> #include <cstring> #define SIZE 300005 #define BT 20 using namespace std; int A[SIZE]; int par[SIZE][BT]; int mn[SIZE][BT]; int ans[SIZE]; int main() { int n; scanf("%d",&n); memset(par,-1,sizeof(par)); memset(mn,-1,sizeof(mn)); for(int i=0;i<n;i++) { int a; scanf("%d",&a); if(a>0) { ans[i]=a; par[i][0]=i; } else { a=-a; int to=i-1; for(int j=BT-1;j>=0;j--) { if(mn[to][j]>=a) { to=par[to][j]; } } to--; if(to==-1) { ans[i]=0; mn[i][0]=a; } else { ans[i]=ans[to]; int now=to,c=a; for(int j=0;j<BT;j++) { par[i][j]=now; mn[i][j]=c; if(now!=-1) { c=mn[now][j]; now=par[now][j]; } } } } printf("%d\n",ans[i]); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 35 ms | 47192 KB | Output is correct |
2 | Incorrect | 37 ms | 47472 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 160 ms | 51976 KB | Output is correct |
2 | Correct | 147 ms | 53604 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 97 ms | 53604 KB | Output is correct |
2 | Correct | 110 ms | 54280 KB | Output is correct |
3 | Correct | 249 ms | 55500 KB | Output is correct |
4 | Correct | 170 ms | 58676 KB | Output is correct |
5 | Correct | 146 ms | 60776 KB | Output is correct |
6 | Correct | 173 ms | 60776 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 35 ms | 47192 KB | Output is correct |
2 | Incorrect | 37 ms | 47472 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |