Submission #1264876

#TimeUsernameProblemLanguageResultExecution timeMemory
1264876nguyenhuythachLightning Conductor (POI11_pio)C++20
100 / 100
85 ms16964 KiB
#include<bits/stdc++.h> #include<algorithm> #include<random> #include<chrono> #include<cstdlib> #include<ctime> #include<numeric> #include<vector> #include<stack> #include<map> #include<set> #include<queue> #include<iomanip> #define int long long #define ll long long #define L LLONG_MAX #define fi first #define se second #define pii pair<int,int> #define sz(a) ((int)a.size()) #define FOR(i,j,k) for(int i=j;i<=k;i++) #define REP(i,k,j) for(int i=k;i>=j;i--) #define FORD(i,a) for(auto i:a) #define rngdcl mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) #define random(l,r) ((l)+(rng()%(r-l+1))) using namespace std; const int mod=1e9+7; const int nmax=5e5+5; double sqr[nmax],ans[nmax]; int n,a[nmax]; void dnc(int s, int e, int ps, int pe, int rev) { if(s>e) return; int m=(s+e)/2; int opt=-1; double mx=-1e9; FOR(i,ps,min(pe,m-1)) { double cur=a[i]+sqr[m-i]; if(cur>mx) { mx=cur; opt=i; } } if(rev) ans[n+1-m]=max(ans[n+1-m],mx); else ans[m]=max(ans[m],mx); dnc(s,m-1,ps,opt,rev); dnc(m+1,e,opt,pe,rev); } void input() { cin >> n; FOR(i,1,n) { cin >> a[i]; sqr[i]=sqrt(i); } } void solve() { dnc(1,n,1,n,0); reverse(a+1,a+n+1); dnc(1,n,1,n,1); reverse(a+1,a+n+1); FOR(i,1,n) { int cu=(int)ceil(ans[i]); cout << max(cu-a[i],1ll*0) << ' '; } } signed main() { //freopen(".inp", "r", stdin); //freopen(".out", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); solve(); }
#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...