#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;
vector<int> ev;
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;
for(int i=0;i<p;i++){
int x1,y1,x2,y2,pr;
cin>>x1>>y1>>x2>>y2>>pr;
obs x(y1,y2,pr);
ev.pb(x1);
ev.pb(x2);
add[x1].pb(x);
er[x2].pb(x);
}
sort(all(ev));
unicorn(ev);
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;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
81 ms |
141136 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
84 ms |
141136 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
115 ms |
141392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
149 ms |
141216 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
141 ms |
141408 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
203 ms |
141400 KB |
Output is correct |
2 |
Correct |
241 ms |
141272 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
273 ms |
141408 KB |
Output is correct |
2 |
Correct |
202 ms |
141368 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
123 ms |
141648 KB |
Output is correct |
2 |
Correct |
154 ms |
141748 KB |
Output is correct |
3 |
Correct |
149 ms |
141740 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
321 ms |
142672 KB |
Output is correct |
2 |
Correct |
344 ms |
142520 KB |
Output is correct |
3 |
Correct |
331 ms |
142420 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
502 ms |
143308 KB |
Output is correct |
2 |
Correct |
116 ms |
143056 KB |
Output is correct |
3 |
Incorrect |
156 ms |
142672 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
628 ms |
143600 KB |
Output is correct |
2 |
Correct |
765 ms |
143472 KB |
Output is correct |
3 |
Correct |
379 ms |
143880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
523 ms |
144076 KB |
Output is correct |
2 |
Correct |
1026 ms |
144080 KB |
Output is correct |
3 |
Correct |
1049 ms |
144164 KB |
Output is correct |
4 |
Correct |
1018 ms |
144080 KB |
Output is correct |
5 |
Correct |
975 ms |
144180 KB |
Output is correct |
6 |
Correct |
385 ms |
144328 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5025 ms |
159900 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5059 ms |
168712 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
5056 ms |
177080 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |