Submission #661617

#TimeUsernameProblemLanguageResultExecution timeMemory
661617guagua0407벽 (IOI14_wall)C++17
0 / 100
176 ms13844 KiB
/*
希望全國賽不要墊底
*/
#include <bits/stdc++.h>
#include <wall.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

void setIO(string s) {
    freopen((s + ".in").c_str(), "r", stdin);
    freopen((s + ".out").c_str(), "w", stdout);
}

const ll mxh=(ll)1e17;

struct node{
    ll up=0,down=mxh;
};

const int mxn=2e5+5;
node segtree[8000];
int n=10,k=6;

void push(int v){
    segtree[v*2].up=max(segtree[v*2].up,segtree[v].up);
    segtree[v*2].down=min(segtree[v*2].down,segtree[v].down);
    segtree[v*2].up=min(segtree[v*2].up,segtree[v].down);
    segtree[v*2].down=max(segtree[v*2].down,segtree[v].up);
    segtree[v*2+1].up=max(segtree[v*2+1].up,segtree[v].up);
    segtree[v*2+1].down=min(segtree[v*2+1].down,segtree[v].down);
    segtree[v*2+1].up=min(segtree[v*2+1].up,segtree[v].down);
    segtree[v*2+1].down=max(segtree[v*2+1].down,segtree[v].up);
    segtree[v].up=0;
    segtree[v].down=mxh;
}

void update(int type,int tl,int tr,ll h,int l=0,int r=n-1,int v=1){
    if(tl>tr){
        return;
    }
    if(tl<=l and r<=tr){
        if(type==1){
        	segtree[v].up=max(segtree[v].up,h);
        	segtree[v].down=max(segtree[v].down,h);
        }
        else{
        	segtree[v].down=min(segtree[v].down,h);
        	segtree[v].up=min(segtree[v].up,h);
        }
        return;
    }
    push(v);
    int mid=(l+r)/2;
    update(type,tl,min(mid,tr),h,l,mid,v*2);
    update(type,max(mid+1,tl),tr,h,mid+1,r,v*2+1);
}

ll query(int pos,int l=0,int r=n-1,int v=1){
    if(l==r){
        return min(segtree[v].up,segtree[v].down);
    } 
    push(v);
    int mid=(l+r)/2;
    if(pos<=mid) return query(pos,l,mid,v*2);
    else return query(pos,mid+1,r,v*2+1);
}

void buildWall(int n,int k,int op[],int l[],int r[],int h[], int final[]){
	for(int i=0;i<k;i++){
        update(op[i],l[i],r[i],h[i]);
    }
    for(int i=0;i<n;i++){
        final[i]=query(i);
    }
}

/*int main() {_
    //setIO("wayne");
	int op[6]={1,2,2,1,1,2};
	int l[6]={1,4,3,0,2,6};
	int r[6]={8,9,6,5,2,7};
	int h[6]={4,1,5,3,5,0};
	int final[10];
    buildWall(n,k,op,l,r,h,final);
    for(int i=0;i<n;i++){
        cout<<final[i]<<' ';
    }
    return 0;   
}*/
//maybe its multiset not set

Compilation message (stderr)

wall.cpp: In function 'void setIO(std::string)':
wall.cpp:15:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wall.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...