Submission #914480

#TimeUsernameProblemLanguageResultExecution timeMemory
914480abcvuitunggioPyramid Base (IOI08_pyramid_base)C++17
80 / 100
5034 ms94992 KiB
#include <bits/stdc++.h> using namespace std; const int M=1000001,P=400001; int m,n,b,p,x[P],y[P],u[P],v[P],c[P],s=1; unsigned int st[M*4],sum[M*4]; vector <int> ve[M+1]; 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; sum[node]+=val; return; } 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])+sum[node]; } 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]=sum[i]=0; for (int i=1;i<=p;i++){ int X=max(x[i]-sz+1,1); 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,1),v[abs(j)],c[abs(j)]*(j<0?-1:1)); if (st[1]<=b) return true; } return false; } int 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]; if (!check(1)){ cout << 0; return 0; } int l=2,r=min(m,n),kq=1; while (l<=r){ int mid=(l+r)>>1; if (check(mid)){ kq=mid; l=mid+1; } else r=mid-1; } cout << kq; }

Compilation message (stderr)

pyramid_base.cpp: In function 'bool check(int)':
pyramid_base.cpp:33:18: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'int' [-Wsign-compare]
   33 |         if (st[1]<=b)
      |             ~~~~~^~~
#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...