#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define arr array<int, 5>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
int N = 1<<20;
vector<short> bmin(2*N, 0);
vector<short> badd(2*N, 0);
void update(int curr, int l, int r, int a, int b, int add, int dd)
{
if (r<=a || l>=b)
{
bmin[curr] += add;
badd[curr] += add;
return;
}
if (a<=l && r<=b)
{
add+=dd;
bmin[curr] += add;
badd[curr] += add;
return;
}
int m = (l+r)/2;
add+=badd[curr];
badd[curr] = 0;
update(curr*2, l, m, a, b, add, dd);
update(curr*2+1, m, r, a, b, add, dd);
bmin[curr] = min(bmin[curr*2], bmin[curr*2+1]);
}
int finde(int pos)
{
int curr = 1;
int sol = 2*1e9+1;
int add = 0;
for (int i = 19; i >= 0; i--)
{
add += badd[curr];
curr*=2;
if (pos < (1<<i)) continue;
pos -= 1<<i;
sol = min(sol, bmin[curr]+add);
curr++;
}
return sol;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int x, y;
cin >> x >> y;
int b, n;
cin >> b >> n;
vector<arr> ele(n);
for (int i= 0; i < n; i++)
{
int x1, y1, x2, y2, c;
cin >> x1 >> y1 >> x2 >> y2 >> c;
x1--; y1--; x2--; y2--;
ele[i] = {x1, y1, x2, y2, c};
}
int sum = 0;
for (int i = 19; i >= 0; i--)
{
sum += 1<<i;
vector<vector<arr>> begin(1e6);
vector<vector<arr>> ende(1e6);
bmin.assign(2*N, 0);
badd.assign(2*N, 0);
for (int j = 0; j < n; j++)
{
begin[max(0, ele[j][0]-sum+1)].push_back({max(0, ele[j][1]-sum+1), ele[j][3], ele[j][4]});
ende[ele[j][2]].push_back({max(0, ele[j][1]-sum+1), ele[j][3], ele[j][4]});
}
int mn = 2*1e9+1;
for (int j = 0; j < x-sum+1; j++)
{
for (arr ele2:begin[j]) update(1, 0, N, ele2[0], ele2[1]+1, 0, ele2[2]);
mn = min(mn, finde(y-sum+1));
for (arr ele2:ende[j])
{
update(1, 0, N, ele2[0], ele2[1]+1, 0, -ele2[2]);
}
}
if (mn > b) sum -= 1<<i;
}
cout << sum;
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
242 ms |
55668 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
201 ms |
55656 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
193 ms |
55748 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
212 ms |
55688 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
245 ms |
55900 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
334 ms |
55632 KB |
Output is correct |
2 |
Correct |
620 ms |
55644 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
568 ms |
55740 KB |
Output is correct |
2 |
Correct |
360 ms |
55824 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
459 ms |
56320 KB |
Output is correct |
2 |
Incorrect |
427 ms |
56312 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
528 ms |
57352 KB |
Output is correct |
2 |
Incorrect |
297 ms |
57384 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
841 ms |
57896 KB |
Output is correct |
2 |
Correct |
1022 ms |
57660 KB |
Output is correct |
3 |
Correct |
249 ms |
57772 KB |
Output is correct |
4 |
Incorrect |
612 ms |
58376 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1020 ms |
58408 KB |
Output is correct |
2 |
Incorrect |
450 ms |
58476 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1083 ms |
59324 KB |
Output is correct |
2 |
Incorrect |
758 ms |
59124 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2816 ms |
81776 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5025 ms |
90720 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
5045 ms |
100320 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |