Submission #761861

# Submission time Handle Problem Language Result Execution time Memory
761861 2023-06-20T10:35:04 Z Issa Meteors (POI11_met) C++17
74 / 100
280 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;


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

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

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

int upd(int l, int r, int x, int v, int tl = 1, int tr = m){
    int nv = copy(v);
    if(tl > r || tr < l) return nv;
    if(l <= tl && tr <= r) d[nv] += x;
    else{
        int 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;
}

int upd1(int l, int r, int x, int v, int tl = 1, int tr = m){
    int nv = copy(v);
    if(r < tl && tr < l) return nv;
    if(l <= tl || tr <= r) d[nv] += x;
    else{
        int 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;
}

int get(int i, int v, int tl = 1, int tr = m){
    if(tl == tr) return d[v];
    int 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(int i = 1; i <= m; i++){
        int x; cin >> x;
        g[x].push_back(i);
    }
    for(int i = 1; i <= n; i++){
        cin >> a[i];
    }
    cin >> q;
    for(int i = 1; i <= q; i++){
        int 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(int i = 1; i <= n; i++){
        int ans = -1;
        for(int l = 0, r = q; l <= r;){
            int mid = (l + r) >> 1;
            ll sum = 0;
            for(int 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 7764 KB Output is correct
2 Correct 5 ms 7900 KB Output is correct
3 Correct 4 ms 7900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 7892 KB Output is correct
2 Correct 4 ms 7892 KB Output is correct
3 Correct 5 ms 7892 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 90 ms 52300 KB Output is correct
2 Correct 142 ms 52884 KB Output is correct
3 Correct 280 ms 52732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 124 ms 52472 KB Output is correct
2 Correct 154 ms 52424 KB Output is correct
3 Correct 157 ms 52852 KB Output is correct
4 Correct 38 ms 12540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 67 ms 32284 KB Output is correct
2 Correct 92 ms 53192 KB Output is correct
3 Correct 31 ms 30292 KB Output is correct
4 Correct 147 ms 52756 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 115 ms 52280 KB Output is correct
2 Correct 143 ms 52516 KB Output is correct
3 Correct 98 ms 52500 KB Output is correct
4 Correct 155 ms 53128 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 111 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 113 ms 65536 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -