Submission #657180

#TimeUsernameProblemLanguageResultExecution timeMemory
65718020060907Wall (IOI14_wall)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
#define fio ios_base::sync_with_stdio(0); cin.tie(0);
#define long long
#define vt vector
#define pb push_back
#define eb emplace_back
#define INF 0x3f3f3f3f
#define PI pair<int, int>
#define rep(i, from, to) for (int i = from; i <= to; i++)
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#pragma GCC target("avx,avx2,fma")
const int mxn = 2e6 + 5;

int n;
int tr[mxn << 2], add[mxn << 2], del[mxn << 2];
void push(int idx){
    // cout << add[idx] << " " << del[idx] << "\n";
    if(add[idx]){
        if(add[idx] > add[idx << 1]){
            add[idx << 1] = add[idx];
            if(add[idx << 1] > del[idx << 1]) del[idx << 1] = add[idx << 1];
        }
        if(add[idx] > add[idx << 1 | 1]){
            add[idx << 1 | 1] = add[idx];
            if(add[idx << 1 | 1] > del[idx << 1 | 1]) del[idx << 1 | 1] = add[idx << 1 | 1];
        }
        add[idx] = 0;
    }
    if(del[idx] < INF){
        if(del[idx] < del[idx << 1]){
            del[idx << 1] = del[idx];
            if(del[idx << 1] < add[idx << 1]) add[idx << 1] = del[idx << 1];
        }
        if(del[idx] < del[idx << 1 | 1]){
            del[idx << 1 | 1] = del[idx];
            if(del[idx << 1 | 1] < add[idx << 1 | 1]) add[idx << 1 | 1] = del[idx << 1 | 1];
        }
        del[idx] = INF;
    }
}
// void push(int idx) {
//     if (add[idx]) {
//         cout << add[idx << 1] << ' ' << del[idx << 1] << ' ' << add[idx << 1 | 1] << ' ' << del[idx << 1 | 1] << '\n';
//         add[idx << 1] = max(add[idx << 1], add[idx]);
//         add[idx << 1 | 1] = max(add[idx << 1 | 1], add[idx]);
//         del[idx << 1] = max(del[idx << 1], add[idx << 1]);
//         del[idx << 1 | 1] = max(del[idx << 1], add[idx << 1 | 1]);
//         add[idx] = 0;
//     }
//     if (del[idx] != INF) {
//         cout << add[idx << 1] << ' ' << del[idx << 1] << ' ' << add[idx << 1 | 1] << ' ' << del[idx << 1 | 1] << '\n';
//         del[idx << 1] = min(del[idx << 1], del[idx]);
//         del[idx << 1 | 1] = min(del[idx << 1 | 1], del[idx]);
//         add[idx << 1] = min(add[idx << 1], del[idx << 1]);
//         add[idx << 1 | 1] = min(add[idx << 1 | 1], del[idx << 1 | 1]);
//         del[idx] = INF;
//     }
//     cout << add[idx] << ' ' << del[idx] << '\n';
// }
int query(int pos, int idx = 1, int l = 1, int r = n) { //query(a, b, 1, 1, n);
    if (l != r) push(idx);
    else return add[idx];
    int m = (l + r) >> 1;
    if (pos > m) return query(pos, idx << 1 | 1, m + 1, r);
    return query(pos, idx << 1, l, m);
    // return combine(query(ql, qr, idx << 1, l, m), query(ql, qr, idx << 1 | 1, m + 1, r));
}
void ad(int ql, int qr, int v, int idx = 1, int l = 1, int r = n) { //update(ql, qr, value, 1, 1, n);
    // cout << "ad " << l << ' ' << r << '\n';
    if (l != r) push(idx);
    if (ql <= l && qr >= r) {
        add[idx] = max(add[idx], v);
        del[idx] = max(del[idx], v);
        return;
    }
    int m = (l + r) >> 1;
    if (qr > m) ad(ql, qr, v, idx << 1 | 1, m + 1, r);
    if (ql <= m) ad(ql, qr, v, idx << 1, l, m);
//     tr[idx] = combine(tr[idx << 1], tr[idx << 1 | 1]);
}
void de(int ql, int qr, int v, int idx = 1, int l = 1, int r = n) { //update(ql, qr, value, 1, 1, n);
    // cout << "de " << l << ' ' << r << '\n';
    if (l != r) push(idx);
    if (ql <= l && qr >= r) {
        add[idx] = min(add[idx], v);
        del[idx] = min(del[idx], v);
        return;
    }
    int m = (l + r) >> 1;
    if (qr > m) de(ql, qr, v, idx << 1 | 1, m + 1, r);
    if (ql <= m) de(ql, qr, v, idx << 1, l, m);
//     tr[idx] = combine(tr[idx << 1], tr[idx << 1 | 1]);
}
signed main(void){
    fio
    memset(del, 0x3f, sizeof(del));
    int q, cmd, l, r, h;
    cin >> n >> q;
    while (q--) {
        cin >> cmd >> l >> r >> h;
        ++l; ++r;
        if (cmd == 1) ad(l, r, h);
        else de(l, r, h);
        // cout << '\n';
    }
    rep(i, 1, n) cout << query(i) << ' ';
    cout << '\n';
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccQBUuwl.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc7gnvsi.o:wall.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccQBUuwl.o: in function `main':
grader.cpp:(.text.startup+0x133): undefined reference to `buildWall(int, int, int*, int*, int*, int*, int*)'
collect2: error: ld returned 1 exit status