#include<bits/stdc++.h>
using namespace std;
#define int long long
struct Node{
int val, lazy;
Node (int _val=0){
val=_val, lazy=0;
}
void merge(const Node &tl, const Node &tr){
val=min(tl.val, tr.val);
}
};
struct SegmentTree{
vector<Node> t;
int n;
void init(int _n){
n=_n;
t.assign(4*n+1, Node());
}
void apply(int k, int val){
t[k].val+=val;
t[k].lazy+=val;
}
void push(int k){
if (t[k].lazy){
apply(k<<1, t[k].lazy);
apply(k<<1|1, t[k].lazy);
t[k].lazy=0;
}
}
void update(int k, int l, int r, int L, int R, int val){
if (r<L || R<l) return;
if (L<=l && r<=R){
apply(k, val);
return;
}
push(k);
int mid=(l+r)>>1;
update(k<<1, l, mid, L, R, val);
update(k<<1|1, mid+1, r, L, R, val);
t[k].merge(t[k<<1], t[k<<1|1]);
}
int get(int k, int l, int r, int L, int R){
if (r<L || R<l) return 1e18;
if (L<=l && r<=R) return t[k].val;
push(k);
int mid=(l+r)>>1;
return min(get(k<<1, l, mid, L, R), get(k<<1|1, mid+1, r, L, R));
}
} st;
struct Rect{
int x1, y1, x2, y2, z;
Rect(){ x1=0, y1=0, x2=0, y2=0, z=0; }
};
const int N=1e6+10;
int m, n, p, q;
Rect a[N], b[N];
vector<pair<int, pair<int, int>>> events[N];
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> p >> q >> m >> n;
st.init(q);
for (int i=1; i<=n; ++i) cin >> a[i].x1 >> a[i].y1 >> a[i].x2 >> a[i].y2 >> a[i].z;
int l=1, r=min(p, q);
while (l<=r){
int mid=(l+r)>>1;
for (int i=1; i<=n; ++i){
events[max(1ll, a[i].x1-mid+1)].push_back({a[i].z, {max(1ll, a[i].y1-mid+1), a[i].y2}});
events[a[i].x2+1].push_back({-a[i].z, {max(1ll, a[i].y1-mid+1), a[i].y2}});
}
bool check=0;
for (int i=1; i<=p+1; ++i){
for (auto &j:events[i]) st.update(1, 1, q, j.second.first, j.second.second, j.first);
if (i+mid-1<=p){
check|=st.get(1, 1, q, 1, q-mid+1)<=m;
}
events[i].clear();
events[i].shrink_to_fit();
}
if (check) l=mid+1;
else r=mid-1;
}
cout << r << '\n';
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
101976 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
11 ms |
101976 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
15 ms |
102236 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
24 ms |
102744 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
113 ms |
108376 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
350 ms |
164700 KB |
Output is correct |
2 |
Correct |
1386 ms |
164700 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1246 ms |
164700 KB |
Output is correct |
2 |
Correct |
511 ms |
164692 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
42 ms |
103324 KB |
Output is correct |
2 |
Correct |
59 ms |
103004 KB |
Output is correct |
3 |
Correct |
54 ms |
103004 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
282 ms |
109556 KB |
Output is correct |
2 |
Correct |
305 ms |
109208 KB |
Output is correct |
3 |
Correct |
274 ms |
109472 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
962 ms |
166316 KB |
Output is correct |
2 |
Correct |
186 ms |
103480 KB |
Output is correct |
3 |
Correct |
158 ms |
166800 KB |
Output is correct |
4 |
Correct |
1795 ms |
166776 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1285 ms |
166756 KB |
Output is correct |
2 |
Correct |
1807 ms |
166544 KB |
Output is correct |
3 |
Correct |
864 ms |
166988 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
993 ms |
167220 KB |
Output is correct |
2 |
Correct |
2131 ms |
166656 KB |
Output is correct |
3 |
Correct |
1937 ms |
166808 KB |
Output is correct |
4 |
Correct |
2065 ms |
166804 KB |
Output is correct |
5 |
Correct |
2077 ms |
166648 KB |
Output is correct |
6 |
Correct |
593 ms |
167080 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5042 ms |
177364 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5013 ms |
184152 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5023 ms |
190380 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |