Submission #894044

# Submission time Handle Problem Language Result Execution time Memory
894044 2023-12-27T20:52:05 Z raul2008487 Wall (IOI14_wall) C++17
61 / 100
2981 ms 262144 KB
#include<bits/stdc++.h>
#include "wall.h"
#define ll long long
#define vl vector<ll>
#define pll pair<ll,ll>
#define in insert
#define fi first
#define se second
#define all(v) v.begin(), v.end()
using namespace std;
const int sz = 2e6+6;
const ll dh = 1e9;
vector<array<ll, 2>> st(sz<<2), res(sz);
bool last[sz<<2];
void comp(ll x1, ll x2){
    if(st[x1][0] > st[x2][1]){
        st[x2] = {st[x1][0], st[x1][0]};
    }
    else if(st[x1][1] < st[x2][0]){
        st[x2] = {st[x1][1], st[x1][1]};
    }
    else{
        st[x2] = {max(st[x1][0], st[x2][0]), min(st[x1][1], st[x2][1])};
    }
}
void push(ll v, ll l, ll r){
    if(l == r){return ;}
    comp(v, v*2);
    comp(v, v*2+1);
    st[v] = {0, dh};
}
void build(ll v, ll l, ll r){
    if(l == r){
        last[v] = 1;
        res[v] = {0, 0};
        return ;
    }
    ll m = (l + r)>>1;
    build(v*2, l, m);
    build(v*2+1, m+1, r);
}
void update(ll v, ll tl, ll tr, ll l, ll r, ll val, ll  type){
    if(max(l, tl) > min(r, tr)){return ;}
    push(v, tl, tr);
    if(tl >= l && tr <= r){
        if(last[v]){
            if(type == 1){
                st[v][0] = max(st[v][0], val);
                st[v][1] = max(st[v][1], val);
            }
            else{
                st[v][0] = min(st[v][0], val);
                st[v][1] = min(st[v][1], val);
            }
            return ;
        }
        if(type == 1){
            st[v] = {val, dh};
        }
        else{
            st[v] = {0, val};
        }
        push(v, tl, tr);
        return ;
    }
    ll tm = (tl+tr)>>1;
    update(v*2, tl, tm, l, r, val, type);
    update(v*2+1, tm+1, tr, l, r, val, type);
}
void trav(ll v, ll tl, ll tr){
    if(tl == tr){
        res[tl] = st[v];
        return ;
    }
    push(v, tl, tr);
    ll tm = (tl + tr)>>1;
    trav(v*2, tl, tm);
    trav(v*2+1, tm+1, tr);
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
    ll i, j, z = 0;
    for(i=0;i<=(n<<2);i++){
        st[i] = {0, dh};
    }
    build(1, 0, n-1);
    for(i=0;i<k;i++){
        update(1, 0, n-1, left[i], right[i], height[i], op[i]);
    }
    trav(1, 0, n-1);
    for(i=0;i<n;i++){
        finalHeight[i] = res[i][0];
    }
}

/*
10 6
1 1 8 4
0 4 9 1
0 3 6 5
1 0 5 3
1 2 2 5
0 6 7 0
*/

Compilation message

wall.cpp: In function 'void buildWall(int, int, int*, int*, int*, int*, int*)':
wall.cpp:81:11: warning: unused variable 'j' [-Wunused-variable]
   81 |     ll i, j, z = 0;
      |           ^
wall.cpp:81:14: warning: unused variable 'z' [-Wunused-variable]
   81 |     ll i, j, z = 0;
      |              ^
# Verdict Execution time Memory Grader output
1 Correct 30 ms 156800 KB Output is correct
2 Correct 27 ms 157108 KB Output is correct
3 Correct 27 ms 157012 KB Output is correct
4 Correct 28 ms 157008 KB Output is correct
5 Correct 29 ms 157020 KB Output is correct
6 Correct 30 ms 157152 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 156752 KB Output is correct
2 Correct 120 ms 164688 KB Output is correct
3 Correct 158 ms 160324 KB Output is correct
4 Correct 426 ms 167516 KB Output is correct
5 Correct 235 ms 168024 KB Output is correct
6 Correct 235 ms 168020 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 156756 KB Output is correct
2 Correct 24 ms 157020 KB Output is correct
3 Correct 24 ms 157012 KB Output is correct
4 Correct 29 ms 157168 KB Output is correct
5 Correct 26 ms 157120 KB Output is correct
6 Correct 26 ms 157012 KB Output is correct
7 Correct 25 ms 156756 KB Output is correct
8 Correct 120 ms 164588 KB Output is correct
9 Correct 157 ms 160412 KB Output is correct
10 Correct 410 ms 167504 KB Output is correct
11 Correct 246 ms 168088 KB Output is correct
12 Correct 236 ms 168016 KB Output is correct
13 Correct 22 ms 156752 KB Output is correct
14 Correct 122 ms 164692 KB Output is correct
15 Correct 52 ms 157520 KB Output is correct
16 Correct 616 ms 167712 KB Output is correct
17 Correct 239 ms 167760 KB Output is correct
18 Correct 252 ms 167660 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 22 ms 156756 KB Output is correct
2 Correct 27 ms 157020 KB Output is correct
3 Correct 23 ms 156916 KB Output is correct
4 Correct 28 ms 157008 KB Output is correct
5 Correct 26 ms 157020 KB Output is correct
6 Correct 26 ms 157020 KB Output is correct
7 Correct 23 ms 156920 KB Output is correct
8 Correct 150 ms 164652 KB Output is correct
9 Correct 161 ms 160240 KB Output is correct
10 Correct 399 ms 167504 KB Output is correct
11 Correct 243 ms 167924 KB Output is correct
12 Correct 277 ms 168016 KB Output is correct
13 Correct 22 ms 156820 KB Output is correct
14 Correct 124 ms 164920 KB Output is correct
15 Correct 53 ms 157540 KB Output is correct
16 Correct 593 ms 167768 KB Output is correct
17 Correct 268 ms 167772 KB Output is correct
18 Correct 238 ms 167624 KB Output is correct
19 Runtime error 2981 ms 262144 KB Execution killed with signal 9
20 Halted 0 ms 0 KB -