Submission #259566

#TimeUsernameProblemLanguageResultExecution timeMemory
259566tqbfjotldSanta Claus (RMI19_santa)C++14
20 / 100
1095 ms2936 KiB
#include <bits/stdc++.h> using namespace std; int T; int n; int numelf; int lastelf; int pos[97000]; bool iself[97000]; int val[97000]; bool test(int d,int bound){ multiset<int> presents; for (int x = 0; x<d; x++){ if (iself[x]){ presents.insert(val[x]); } else{ auto it = presents.lower_bound(val[x]); if (it!=presents.end()) { presents.erase(it); } } } for (int x = d; x<=bound; x++){ if (iself[x]){ presents.insert(val[x]); } } for (int x = d; x<=bound; x++){ if (!iself[x]){ auto it = presents.lower_bound(val[x]); if (it!=presents.end()){ presents.erase(it); } } if (presents.empty()) break; } //printf("test %d %d returned %d\n",d,bound,presents.empty()); return presents.empty(); } int main(){ scanf("%d",&T); while (T--){ scanf("%d",&n); for (int x = 0; x<n; x++){ scanf("%d",&pos[x]); } lastelf = 0; numelf=0; for (int x = 0; x<n; x++){ int t; scanf("%d",&t); if (t){ iself[x] = false; } else { iself[x] = true; lastelf = max(lastelf,x); numelf++; } } for (int x = 0; x<n; x++){ scanf("%d",&val[x]); } for (int x = 0; x<n; x++){ if (x<lastelf) { printf("-1 "); continue; } if (x<2*numelf-1){ printf("-1 "); continue; } if (!test(0,x)){ printf("-1 "); continue; } int l = 0; int r = x+1; while (l+1<r){ int mid = (l+r)/2; if (test(mid,x)) l = mid; else r = mid; } printf("%d ",2*pos[x]-pos[l]); } printf("\n"); } }

Compilation message (stderr)

santa.cpp: In function 'int main()':
santa.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&T);
     ~~~~~^~~~~~~~~
santa.cpp:46:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&n);
         ~~~~~^~~~~~~~~
santa.cpp:48:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&pos[x]);
             ~~~~~^~~~~~~~~~~~~~
santa.cpp:54:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&t);
             ~~~~~^~~~~~~~~
santa.cpp:65:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&val[x]);
             ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...