#include<bits/stdc++.h>
using namespace std;
#define ll long long
typedef pair<int,int> pii;
typedef pair<int,pii> pip;
typedef pair<pii,int> ppi;
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define unicorn(x) x.resize(unique(x.begin(),x.end())-x.begin())
#define pb(x) push_back(x);
#define pp() pop_back();
#define lc 2*id+0
#define rc 2*id+1
const int LC = 1e6+10, L = 4e5+10;
const ll inf = 1e10;
int n,m,p,b;
struct obs{
int l,r,c;
obs(int a,int b,int pr){
l = a;
r = b;
c = pr;
}
};
vector<obs> add[LC],er[LC];
random_device device;
default_random_engine rng(device());
#define randt(a,b) uniform_int_distribution<int64_t>(a,b)(rng)
void pr(int* vv,int l,int r){for(int i=l;i<r;i++){cout<<vv[i]<<" ";}cout<<endl;}
void prv(vector<int> vv){for(auto i:vv){cout<<i<<" ";}cout<<endl;}
void prl(long long* vv,int l,int r){for(int i=l;i<r;i++){cout<<vv[i]<<" ";}cout<<endl;}
void prvl(vector<long long> vv){for(auto i:vv){cout<<i<<" ";}cout<<endl;}
void prp(pii* vv,int l,int r){for(int i=l;i<r;i++){cout<<i<<": "<<vv[i].f<<" , "<<vv[i].s<<" / ";}cout<<endl;}
struct node{
ll lazy, mn;
node(){
lazy = mn = 0;
}
}t[LC*6];
struct sagi{
inline void spread(int id){
t[lc].lazy += t[id].lazy;
t[rc].lazy += t[id].lazy;
t[id].mn += t[id].lazy;
t[id].lazy = 0;
}
inline void update(int id,int l,int r,int l2,int r2,ll x){
spread(id);
if(l==l2 and r==r2){
t[id].lazy += x;
return;
}
int mid = (l2+r2)>>1;
if(l<mid)
update(lc,l,min(r,mid),l2,mid,x);
if(r>mid)
update(rc,max(l,mid),r,mid,r2,x);
spread(lc);
spread(rc);
t[id].mn = min(t[lc].mn, t[rc].mn);
}
inline ll get(int id,int l,int r,int l2,int r2){
spread(id);
if(l==l2 and r==r2){
return t[id].mn;
}
int mid = (l2+r2)>>1;
ll ans = inf;
if(l<mid)
ans = min(ans, get(lc,l,min(r,mid),l2,mid));
if(r>mid)
ans = min(ans, get(rc,max(l,mid),r,mid,r2));
return ans;
}
};
int main(){
//ofstream cout ("out.txt");
//ifstream cin ("in.txt");
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//cin>>n>>m>>b>>p;
scanf("%d %d",&n,&m);
scanf("%d",&b);
scanf("%d",&p);
for(int i=0;i<p;i++){
int x1,y1,x2,y2,pr;
//cin>>x1>>y1>>x2>>y2>>pr;
scanf("%d %d %d %d %d",&x1,&y1,&x2,&y2,&pr);
obs x(y1,y2,pr);
add[x1].pb(x);
er[x2].pb(x);
}
int l=0,r=1e6+1;
while(r-l>1){
int mid = (l+r)>>1;
if(mid > n or mid > m){
r = mid;
continue;
}
//cout<<"mid: "<<mid<<endl;
sagi seg;
for(int i=1;i<LC*6;i++){
t[i].lazy = t[i].mn = 0;
}
seg.update(1,1,mid,1,m+1,inf);
ll ans = inf;
for(int i=1;i<=n;i++){
//cout<<"ev: "<<i<<endl;
if(i>mid){
ans = min(ans,t[1].mn);
}
for(auto j:add[i]){
//cout<<" add: "<<j.l<<" "<<j.r<<" "<<j.c<<" / "<<max(j.l,mid)<<" "<<min(j.r+mid,m+1)<<endl;
seg.update(1,max(j.l,mid),min(j.r+mid,m+1),1,m+1,j.c);
}
for(auto j:er[max(i-mid,0)]){
//cout<<" ere: "<<j.l<<" "<<j.r<<" "<<j.c<<endl;
seg.update(1,max(j.l,mid),min(j.r+mid,m+1),1,m+1,-j.c);
}
if(i>mid){
ans = min(ans,t[1].mn);
}
//cout<<" res: "<<seg.t[1].mn<<endl;
//cout<<"= = = = = = = = = = = "<<endl;
}
//cout<<"l,r: "<<l<<","<<r<<" / mid: "<<mid<<" / ans: "<<ans<<endl;
if(ans <= b)
l = mid;
else
r = mid;
//cout<<"---------------------"<<endl;
}
cout<<l<<endl;
}
Compilation message
pyramid_base.cpp: In function 'int main()':
pyramid_base.cpp:99:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
99 | scanf("%d %d",&n,&m);
| ~~~~~^~~~~~~~~~~~~~~
pyramid_base.cpp:100:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
100 | scanf("%d",&b);
| ~~~~~^~~~~~~~~
pyramid_base.cpp:101:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
101 | scanf("%d",&p);
| ~~~~~^~~~~~~~~
pyramid_base.cpp:105:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
105 | scanf("%d %d %d %d %d",&x1,&y1,&x2,&y2,&pr);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
141136 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
141236 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
103 ms |
141144 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
117 ms |
141160 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
147 ms |
141392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
206 ms |
141428 KB |
Output is correct |
2 |
Correct |
232 ms |
141220 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
240 ms |
141392 KB |
Output is correct |
2 |
Correct |
216 ms |
141428 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
104 ms |
141588 KB |
Output is correct |
2 |
Correct |
162 ms |
141648 KB |
Output is correct |
3 |
Correct |
157 ms |
141908 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
306 ms |
142416 KB |
Output is correct |
2 |
Correct |
379 ms |
142416 KB |
Output is correct |
3 |
Correct |
327 ms |
142384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
504 ms |
142932 KB |
Output is correct |
2 |
Correct |
119 ms |
142824 KB |
Output is correct |
3 |
Incorrect |
168 ms |
142420 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
633 ms |
143616 KB |
Output is correct |
2 |
Correct |
819 ms |
143372 KB |
Output is correct |
3 |
Correct |
383 ms |
143624 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
582 ms |
144052 KB |
Output is correct |
2 |
Correct |
1014 ms |
143944 KB |
Output is correct |
3 |
Correct |
1035 ms |
143916 KB |
Output is correct |
4 |
Correct |
1053 ms |
143924 KB |
Output is correct |
5 |
Correct |
1099 ms |
143932 KB |
Output is correct |
6 |
Correct |
404 ms |
143952 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5042 ms |
158292 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5026 ms |
166064 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5074 ms |
173140 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |