This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define arr array<int, 5>
int N = 1<<20;
vector<int> bmin(2*N, 0);
vector<int> 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()
{
//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 = 20; 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;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |