Submission #84871

#TimeUsernameProblemLanguageResultExecution timeMemory
84871nikolapesic2802Lightning Conductor (POI11_pio)C++14
36 / 100
552 ms23212 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back struct func{ int poz; int h; }; double f(func x,int i) { double sol=x.h+(double)sqrt((double)abs(i-x.poz)); return sol; } int N; struct liChao{ vector<func> tr; void init(func start) { tr.resize(4*N); fill(tr.begin(),tr.end(),start); } void set(func x,int i=1,int l=0,int r=N) { int m=(l+r)>>1; bool lft=f(x,l)>f(tr[i],l); bool mid=f(x,m)>f(tr[i],m); if(mid){ swap(tr[i],x); } if(r-l==1) return; if(lft!=mid) { set(x,2*i,l,m); } else { set(x,2*i+1,m,r); } } double get(int poz,int i=1,int l=0,int r=N) { int m=(l+r)>>1; if(r-l==1) return f(tr[i],poz); if(poz<m) return max(f(tr[i],poz),get(poz,2*i,l,m)); else return max(f(tr[i],poz),get(poz,2*i+1,m,r)); } } ST; int main() { int n; scanf("%i",&n); N=n; vector<int> h(n); for(int i=0;i<n;i++) { scanf("%i",&h[i]); func tr; tr.h=h[i]; tr.poz=i; if(i==0) ST.init(tr); else ST.set(tr); } for(int i=0;i<n;i++) { double d=ST.get(i); int a=d; if(d>a) a++; assert(a>=h[i]); printf("%i\n",a-h[i]); } return 0; }

Compilation message (stderr)

pio.cpp: In function 'int main()':
pio.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i",&n);
     ~~~~~^~~~~~~~~
pio.cpp:62:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%i",&h[i]);
         ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...