| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1348094 | Aviansh | Pyramid Base (IOI08_pyramid_base) | C++20 | 3198 ms | 327680 KiB |
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int inf = 2e9;
struct segTree{
struct node{
int val,laz;
};
node *st;
node def;
segTree(int n){
int x = ceil(log2(n));
x++;
st=new node[(1<<x)];
def.val=0;
def.laz=0;
fill(st,st+(1<<x),def);
}
void push(int ind, int l, int r){
if(st[ind].laz==0)
return;
st[ind].val+=st[ind].laz;
if(l<r){
st[ind*2+1].laz+=st[ind].laz;
st[ind*2+2].laz+=st[ind].laz;
}
st[ind].laz=0;
}
void update(int l, int r,int s, int e, int ind, int val){
push(ind,l,r);
if(e<l||s>r){
return;
}
if(s<=l&&r<=e){
st[ind].laz=val;
push(ind,l,r);
return;
}
int mid = (l+r)/2;
update(l,mid,s,e,ind*2+1,val);
update(mid+1,r,s,e,ind*2+2,val);
st[ind].val = min(st[ind*2+1].val,st[ind*2+2].val);
}
};
int fin(int len, int m, int n, array<int,4> evs[], int p){
if(len==0){
return 0;
}
len--;
p*=2;
vector<array<int,3>>evens[m+1];
for(int i = 0;i<p;i++){
array<int,4>e = evs[i];
e[1]-=len;
e[1]=max(0LL,e[1]);
if(e[3]<0){
e[0]+=len;
}
e[0]=min(e[0],m);
evens[e[0]].push_back({e[1],e[2],e[3]});
}
segTree st(n);
st.update(0,n-1,0,n-1,0,inf);
evens[len].push_back({0,n-1,-inf});
st.update(0,n-1,n-len,n-1,0,inf);
int ans = inf;
for(int i = 0;i<m;i++){
for(array<int,3>e:evens[i]){
st.update(0,n-1,e[0],e[1],0,e[2]);
}
ans=min(ans,st.st[0].val);
}
return ans;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int m,n;
cin >> m >> n;
int b;
cin >> b;
int p;
cin >> p;
array<int,4> evs[p*2];
for(int i = 0;i<p;i++){
int x1,y1,x2,y2,c;
cin >> x1 >> y1 >> x2 >> y2 >> c;
x1--;x2--;
y1--;y2--;
evs[i]={x1,y1,y2,c};
evs[i+p]={x2+1,y1,y2,-c};
}
int lo = 0;
int hi = min(m,n);
while(lo<hi){
int mid = (lo+hi+1)/2;
if(fin(mid,m,n,evs,p)<=b){
lo=mid;
}
else{
hi=mid-1;
}
}
cout << lo;
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... | ||||
