Submission #914465

#TimeUsernameProblemLanguageResultExecution timeMemory
914465abcvuitunggioPyramid Base (IOI08_pyramid_base)C++17
70 / 100
5074 ms145728 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int M=1000001,P=400001; int m,n,b,p,x[P],y[P],u[P],v[P],c[P],st[M*4],lazy[M*4]; vector <int> ve[M+1]; void down(int node, int l, int r){ if (!lazy[node]||l==r) return; st[node<<1]+=lazy[node]; st[node<<1|1]+=lazy[node]; lazy[node<<1]+=lazy[node]; lazy[node<<1|1]+=lazy[node]; lazy[node]=0; } void update(int node, int l, int r, int u, int v, int val){ if (l>v||r<u) return; if (l>=u&&r<=v){ st[node]+=val; lazy[node]+=val; return; } down(node,l,r); int mid=(l+r)>>1; update(node<<1,l,mid,u,v,val); update(node<<1|1,mid+1,r,u,v,val); st[node]=min(st[node<<1],st[node<<1|1]); } bool check(int sz){ for (int i=1;i<=m+1;i++) ve[i].clear(); for (int i=1;i<=n*4;i++) st[i]=lazy[i]=0; for (int i=1;i<=p;i++){ int X=max(x[i]-sz+1,1LL); ve[X].push_back(i); ve[u[i]+1].push_back(-i); } for (int i=1;i<=m-sz+1;i++){ for (int j:ve[i]) update(1,1,n-sz+1,max(y[abs(j)]-sz+1,1LL),v[abs(j)],c[abs(j)]*(j<0?-1:1)); if (st[1]<=b) return true; } return false; } int32_t main(){ ios_base::sync_with_stdio(NULL);cin.tie(nullptr); cin >> m >> n >> b >> p; for (int i=1;i<=p;i++) cin >> x[i] >> y[i] >> u[i] >> v[i] >> c[i]; int l=1,r=min(m,n),kq=0; while (l<=r){ int mid=(l+r)>>1; if (check(mid)){ kq=mid; l=mid+1; } else r=mid-1; } cout << kq; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...