Submission #761642

# Submission time Handle Problem Language Result Execution time Memory
761642 2023-06-20T06:39:59 Z vjudge1 Meteors (POI11_met) C++17
24 / 100
102 ms 65536 KB
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <bitset>
#include <cmath>
#include <queue>
#include <map>
#include <set>

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ent "\n"

const int maxn = 3e5 + 100;
const ll INF = (ll)2e18;
const int inf = (ll)2e9;
const int maxl = 26;
const int MOD = 1e9 + 7;


ll n, m, q, sz;
vector<ll> g[maxn];
ll a[maxn];
ll d[maxn * 60];
ll L[maxn * 60];
ll R[maxn * 60];
ll root[maxn];

ll copy(ll v){
    ll nv = ++sz;
    d[nv] = d[v];
    L[nv] = L[v];
    R[nv] = R[v];
    return nv;
}

ll build(ll tl = 1, ll tr = m){
    ll v = ++sz;
    if(tl < tr){
        ll mid = (tl + tr) >> 1;
        L[v] = build(tl, mid);
        R[v] = build(mid + 1, tr);
    }
    return v;
}

ll upd(ll l, ll r, ll x, ll v, ll tl = 1, ll tr = m){
    ll nv = copy(v);
    if(tl > r || tr < l) return nv;
    if(l <= tl && tr <= r) d[nv] += x;
    else{
        ll mid = (tl + tr) >> 1;
        L[nv] = upd(l, r, x, L[nv], tl, mid);
        R[nv] = upd(l, r, x, R[nv], mid+1, tr);
    }
    return nv;
}

ll upd1(ll l, ll r, ll x, ll v, ll tl = 1, ll tr = m){
    ll nv = copy(v);
    if(r < tl && tr < l) return nv;
    if(l <= tl || tr <= r) d[nv] += x;
    else{
        ll mid = (tl + tr) >> 1;
        L[nv] = upd1(l, r, x, L[nv], tl, mid);
        R[nv] = upd1(l, r, x, R[nv], mid+1, tr);
    }
    return nv;
}

ll get(ll i, ll v, ll tl = 1, ll tr = m){
    if(tl == tr) return d[v];
    ll mid = (tl + tr) >> 1;
    if(i <= mid) return get(i, L[v], tl, mid) + d[v];
    else return get(i, R[v], mid + 1, tr) + d[v];
}

void test(){
    cin >> n >> m;
    root[0] = build();
    for(ll i = 1; i <= m; i++){
        ll x; cin >> x;
        g[x].push_back(i);
    }
    for(ll i = 1; i <= n; i++){
        cin >> a[i];
    }
    cin >> q;
    for(ll i = 1; i <= q; i++){
        ll l, r, x;
        cin >> l >> r >> x;
        if(l <= r) root[i] = upd(l, r, x, root[i-1]);
        else root[i] = upd1(l, r, x, root[i-1]);
    }
    for(ll i = 1; i <= n; i++){
        ll ans = -1;
        for(ll l = 0, r = q; l <= r;){
            ll mid = (l + r) >> 1;
            ll sum = 0;
            for(ll x: g[i]){
                sum += get(x, root[mid]);
            }
            if(sum < a[i]) l = mid + 1;
            else r = mid - 1, ans = mid;
        }
        if(ans == -1) cout << "NIE\n";
        else cout << ans << ent;
    }
}

int main(){
    // freopen("cows.in", "r", stdin);
    // freopen("cows.out", "w", stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int t; t = 1;
    while(t--) test();
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 8020 KB Output is correct
2 Correct 4 ms 8148 KB Output is correct
3 Correct 5 ms 8148 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 8148 KB Output is correct
2 Correct 4 ms 8148 KB Output is correct
3 Correct 4 ms 8148 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 57 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 62 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 72 ms 45304 KB Output is correct
2 Runtime error 52 ms 65536 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 71 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 102 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 100 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -