# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
883737 |
2023-12-05T22:50:13 Z |
andro |
벽 (IOI14_wall) |
C++14 |
|
313 ms |
53076 KB |
#include <bits/stdc++.h>
using namespace std;
int O=0;
const int N=2e6+5;
struct segtree{
int t[4*N]={(int)-1e9};
map<pair<int,int>,int>M;
void build(int v,int tl,int tr){
M[{tl,tr}]=v;
if(tl==tr){
}
else {
int tm=(tl+tr)/2;
build(v*2,tl,tm);
build(v*2+1,tm+1,tr);
}
}
void reset(){
for(int i=0;i<N;i++)t[i]=1e9;
}
void update_min(int v,int tl,int tr,int l,int r,int x){
if(tl>=l&&tr<=r){
t[v]=min(t[v],x);
return;
}
if(tl>r||tr<l)return;
int tm=(tl+tr)/2;
update_min(v*2,tl,tm,l,r,x);
update_min(v*2+1,tm+1,tr,l,r,x);
}
void update_max(int v,int tl,int tr,int l,int r,int x){
if(tl>=l&&tr<=r){
t[v]=max(t[v],x);
return;
}
if(tl>r||tr<l)return;
int tm=(tl+tr)/2;
update_max(v*2,tl,tm,l,r,x);
update_max(v*2+1,tm+1,tr,l,r,x);
}
int query_max(int v){
v=M[{v,v}];
int ans=-1e9;
while(v){
ans=max(ans,t[v]);
v/=2;
}
return ans;
}
int query_min(int v){
v=M[{v,v}];
int ans=1e9;
while(v){
ans=min(ans,t[v]);
v/=2;
}
return ans;
}
}segg;
void buildWall(int n, int k, int op[], int left[], int right[],int height[], int finalHeight[]){
for(int i=0;i<n;i++)finalHeight[i]=0;
if(n<=10000&&k<=5000){
for(int i=0;i<k;i++){
if(op[i]==1){
for(int j=left[i];j<=right[i];j++)finalHeight[j]=max(finalHeight[j],height[i]);
}
else {
for(int j=left[i];j<=right[i];j++)finalHeight[j]=min(finalHeight[j],height[i]);
}
}
return;
}
int subtask=1;
int bio=0;
for(int i=0;i<k;i++){
if(op[i]==1){
if(bio){
subtask=0;
}
}
else {
bio=1;
}
}
if(subtask){
segg.build(1,0,n-1);
for(int i=0;i<k;i++){
if(op[i]==2)break;
segg.update_max(1,0,n-1,left[i],right[i],height[i]);
}
for(int i=0;i<n;i++){
int u=segg.query_max(i);
finalHeight[i]=u;
}
segg.reset();
for(int i=0;i<n;i++)segg.update_min(1,0,n-1,i,i,finalHeight[i]);
for(int i=0;i<k;i++){
if(op[i]==1)continue;
segg.update_min(1,0,n-1,left[i],right[i],height[i]);
}
for(int i=0;i<n;i++){
finalHeight[i]=segg.query_min(i);
}
return;
}
}/*
int main(){
int n,k;
cin>>n>>k;
int op[k];
int l[k];
int r[k];
int x[k];
for(int i=0;i<k;i++)cin>>op[i]>>l[i]>>r[i]>>x[i];
int ans[n];
for(int i=0;i<n;i++)ans[i]=0;
buildWall(n,k,op,l,r,x,ans);
for(int i=0;i<n;i++)cout<<ans[i]<<" ";
}*/
/*
10
6
1 1 8 4
2 4 9 1
2 3 6 5
1 0 5 3
1 2 2 5
2 6 7 0
10
4
1 1 8 4
1 0 5 3
1 2 2 5
2 6 7 0
3 4 5 4 4 4 0 0 4 0
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
31584 KB |
Output is correct |
2 |
Correct |
5 ms |
31636 KB |
Output is correct |
3 |
Correct |
5 ms |
31580 KB |
Output is correct |
4 |
Correct |
17 ms |
31860 KB |
Output is correct |
5 |
Correct |
17 ms |
31836 KB |
Output is correct |
6 |
Correct |
17 ms |
31836 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
31580 KB |
Output is correct |
2 |
Correct |
108 ms |
39332 KB |
Output is correct |
3 |
Correct |
101 ms |
37208 KB |
Output is correct |
4 |
Correct |
296 ms |
52564 KB |
Output is correct |
5 |
Correct |
218 ms |
53076 KB |
Output is correct |
6 |
Correct |
207 ms |
53012 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
31576 KB |
Output is correct |
2 |
Correct |
5 ms |
31580 KB |
Output is correct |
3 |
Correct |
5 ms |
31580 KB |
Output is correct |
4 |
Correct |
17 ms |
31852 KB |
Output is correct |
5 |
Correct |
17 ms |
31864 KB |
Output is correct |
6 |
Correct |
17 ms |
31836 KB |
Output is correct |
7 |
Correct |
4 ms |
31624 KB |
Output is correct |
8 |
Correct |
103 ms |
39436 KB |
Output is correct |
9 |
Correct |
102 ms |
37204 KB |
Output is correct |
10 |
Correct |
313 ms |
52820 KB |
Output is correct |
11 |
Correct |
224 ms |
53072 KB |
Output is correct |
12 |
Correct |
209 ms |
53076 KB |
Output is correct |
13 |
Correct |
4 ms |
31580 KB |
Output is correct |
14 |
Incorrect |
100 ms |
39416 KB |
Output isn't correct |
15 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
31580 KB |
Output is correct |
2 |
Correct |
5 ms |
31576 KB |
Output is correct |
3 |
Correct |
5 ms |
31580 KB |
Output is correct |
4 |
Correct |
17 ms |
31836 KB |
Output is correct |
5 |
Correct |
17 ms |
31860 KB |
Output is correct |
6 |
Correct |
17 ms |
31836 KB |
Output is correct |
7 |
Correct |
4 ms |
31580 KB |
Output is correct |
8 |
Correct |
105 ms |
39536 KB |
Output is correct |
9 |
Correct |
101 ms |
37248 KB |
Output is correct |
10 |
Correct |
291 ms |
52524 KB |
Output is correct |
11 |
Correct |
219 ms |
53000 KB |
Output is correct |
12 |
Correct |
210 ms |
53076 KB |
Output is correct |
13 |
Correct |
4 ms |
31580 KB |
Output is correct |
14 |
Incorrect |
101 ms |
39392 KB |
Output isn't correct |
15 |
Halted |
0 ms |
0 KB |
- |