답안 #205207

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
205207 2020-02-28T10:05:01 Z awlintqaa 벽 (IOI14_wall) C++14
61 / 100
995 ms 16504 KB
    #include <bits/stdc++.h>
    using namespace std;
    #define sqr 200
    #define mid (l+r)/2
    #define pb push_back
    #define ppb pop_back
    #define fi first
    #define se second
    #define lb lower_bound
    #define ub upper_bound
    #define ins insert
    #define era erase
    #define C continue
    #define mem(dp,i) memset(dp,i,sizeof(dp))
    #define mset multiset
    typedef long long ll;
    typedef short int si;
    typedef long double ld;
    typedef pair<int,int> pi;
    typedef pair<ll,ll> pll;
    typedef vector<int> vi;
    typedef vector<ll> vll;
    typedef vector<pi> vpi;
    typedef vector<pll> vpll;
    const ll mod=1e9+7;
    const ll inf= 2e9;
    const ld pai=acos(-1);
    #include "wall.h"
    int tree[8000009];
    struct xxx{int on,mx,mn;}lzy[800009];
    void fill(int pre,int node){
            if(lzy[node].on==0){
                    lzy[node]=lzy[pre];
                    return ;
            }
            lzy[node].mn=max(lzy[node].mn,lzy[pre].mn);
            lzy[node].mx=max(lzy[node].mx,lzy[pre].mn);
            lzy[node].mx=min(lzy[node].mx,lzy[pre].mx);
            lzy[node].mn=min(lzy[node].mn,lzy[pre].mx);
    }
    void lzyUPD(int node,int l,int r){
            if(lzy[node].on==0)return;
            tree[node]=max(tree[node],lzy[node].mn);
            tree[node]=min(tree[node],lzy[node].mx);
            if(l!=r){
                    fill(node,node*2);
                    fill(node,node*2+1);
            }
            lzy[node].on=0;
            lzy[node].mn=-inf;
            lzy[node].mx=inf;
    }
    void upd(int node,int l,int r,int s,int e,int val,int t){
            lzyUPD(node,l,r);
            if(s>r || e<l)return ;
            if(s<=l && e>=r){
                    if(t==1)lzy[node].mn=val,lzy[node].mx=inf;
                    else lzy[node].mn=-inf,lzy[node].mx=val;
                    lzy[node].on=1;
                    lzyUPD(node,l,r);
                    return ;
            }
            upd(node*2,l,mid,s,e,val,t);
            upd(node*2+1,mid+1,r,s,e,val,t);
            tree[node]=max(tree[node*2],tree[node*2+1]);
    }
    int query(int node,int l,int r,int id){
            lzyUPD(node,l,r);
            if(l==r)return tree[node];
            if(id<=mid)return query(node*2,l,mid,id);
            return query(node*2+1,mid+1,r,id);
    }
    void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
            for(int i=0;i<k;i++)upd(1,0,n-1,left[i],right[i],height[i],op[i]);
            for(int i=0;i<n;i++)finalHeight[i]=query(1,0,n-1,i);
    }
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 6 ms 376 KB Output is correct
3 Correct 6 ms 376 KB Output is correct
4 Correct 14 ms 1016 KB Output is correct
5 Correct 11 ms 1016 KB Output is correct
6 Correct 10 ms 1016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 193 ms 8160 KB Output is correct
3 Correct 325 ms 4728 KB Output is correct
4 Correct 988 ms 12924 KB Output is correct
5 Correct 380 ms 13432 KB Output is correct
6 Correct 357 ms 13432 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 7 ms 376 KB Output is correct
3 Correct 6 ms 376 KB Output is correct
4 Correct 14 ms 1016 KB Output is correct
5 Correct 11 ms 1016 KB Output is correct
6 Correct 11 ms 1016 KB Output is correct
7 Correct 5 ms 376 KB Output is correct
8 Correct 190 ms 8184 KB Output is correct
9 Correct 322 ms 4856 KB Output is correct
10 Correct 995 ms 12920 KB Output is correct
11 Correct 361 ms 13564 KB Output is correct
12 Correct 356 ms 13432 KB Output is correct
13 Correct 5 ms 376 KB Output is correct
14 Correct 190 ms 8172 KB Output is correct
15 Correct 55 ms 2168 KB Output is correct
16 Correct 983 ms 13208 KB Output is correct
17 Correct 369 ms 13176 KB Output is correct
18 Correct 359 ms 13176 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 7 ms 376 KB Output is correct
3 Correct 7 ms 376 KB Output is correct
4 Correct 14 ms 1016 KB Output is correct
5 Correct 11 ms 1016 KB Output is correct
6 Correct 11 ms 1048 KB Output is correct
7 Correct 5 ms 376 KB Output is correct
8 Correct 189 ms 8440 KB Output is correct
9 Correct 319 ms 4856 KB Output is correct
10 Correct 972 ms 12976 KB Output is correct
11 Correct 358 ms 13384 KB Output is correct
12 Correct 348 ms 13560 KB Output is correct
13 Correct 4 ms 376 KB Output is correct
14 Correct 191 ms 8160 KB Output is correct
15 Correct 56 ms 2040 KB Output is correct
16 Correct 990 ms 13304 KB Output is correct
17 Correct 374 ms 13292 KB Output is correct
18 Correct 372 ms 13304 KB Output is correct
19 Runtime error 236 ms 16504 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Halted 0 ms 0 KB -