Submission #1015741

# Submission time Handle Problem Language Result Execution time Memory
1015741 2024-07-06T17:45:57 Z vjudge1 Meteors (POI11_met) C++17
74 / 100
1385 ms 65536 KB
//
//  main1.cpp
//  problem1
//
//  Created by Essa Almousa on 2030 / 01/ 01 AD.
//

#include <bits/stdc++.h>

using namespace std;
#define endl '\n'
using ll = int;
using ll1 = int;
#define pb push_back
#define pF first
#define pS second
#define SP <<" "<<
const ll N = 3e5+1;

struct segment {
    vector<ll> tree;
    ll offset = 1;
    void it(ll n) {
        while (offset < n) offset *= 2;
        tree.resize(offset*2, 0);
    }
    void upd(ll v, ll l, ll r, ll ql, ll qr, ll x) {
        if (l >= qr || r <= ql) return;
        if (l >= ql && r <= qr) {tree[v] = min(tree[v] + x, (int)1e9); return;}
        ll mi = (l+r)/2;
        upd(v*2, l, mi, ql, qr, x);
        upd(v*2+1, mi, r, ql, qr, x);
    }
    ll query(ll i) {
        i--;
        i += offset;
        ll ans = 0;
        while (i >= 1) {
            ans = min(ans + tree[i], (int)1e9);
            i /= 2;
        }
        return ans;
    }
    void upd(ll l, ll r, ll val) {return upd(1, 0, offset, l-1, r, val);}
};

struct query_ {
    ll l, r, x;
};
ll a[N], b[N];
ll1 sol[N];
vector<ll> frq[N];
query_ q[N];

int main() {
    //ios::sync_with_stdio(0); cout.tie(0); cin.tie(0);
    ll1 n, m;
    cin>>n>>m;
    for (ll i=1; i<=m; i++) {
        int temp; cin >> temp;
        a[i] = temp;
        //cin>>a[i];
        frq[a[i]].pb(i);
    }
    
    for (ll i=1; i<=n; i++) {
        int temp; cin >> temp;
        b[i] = temp;
        //cin>>b[i];
    }
    
    ll1 q1;
    cin>>q1;
    
    struct binnode { ll i, l, r; };
    
    vector<binnode> bin[N];
    for (ll i=1; i<=n; i++) {
        ll mi = q1+1/2;
        bin[mi].pb({i, 1, q1});
        sol[i] = -1;
    }

    for (ll i=1; i<=q1; i++) {
        ll1 l, r, x;
        cin>>l>>r>>x;
        q[i] = {l, r, x};
    }
    ll1 cnt = n;
    while (cnt > 0) {
        segment tree;
        tree.it(m);
        for (ll i=1; i<=q1; i++) {
            if (q[i].l > q[i].r) {
                tree.upd(q[i].l, m, q[i].x);
                tree.upd(1, q[i].r, q[i].x);
            }
            else tree.upd(q[i].l, q[i].r, q[i].x);
            
            for (ll1 j = bin[i].size()-1; j >= 0; j = bin[i].size()-1) {
                binnode& x = bin[i][j];
                ll ans = 0; // the num
                for (ll k=0; k < frq[x.i].size(); k++) ans = min(ans + tree.query(frq[x.i][k]), (int)1e9);
                if (ans >= b[x.i]) x.r = i;
                else {
                    if (x.l >= q1) {cnt--;bin[i].pop_back(); continue;};
                    x.l = i +1;
                }
                if (x.l != x.r) {bin[(x.l+x.r)/2].pb({x.i, x.l, x.r}); cnt++;}
                else sol[x.i] = x.l;
                bin[i].pop_back();
                cnt--;
                j = bin[i].size() - 1;
            }
        }
    }
    for (ll i=1; i<=n; i++) {
        if (sol[i] == -1) cout << "NIE" << endl;
        else cout << sol[i] << endl;
    }
}

Compilation message

met.cpp: In function 'int main()':
met.cpp:103:32: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  103 |                 for (ll k=0; k < frq[x.i].size(); k++) ans = min(ans + tree.query(frq[x.i][k]), (int)1e9);
      |                              ~~^~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 7 ms 17756 KB Output is correct
2 Correct 8 ms 17584 KB Output is correct
3 Correct 8 ms 17756 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 17756 KB Output is correct
2 Correct 8 ms 17820 KB Output is correct
3 Correct 8 ms 17756 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 211 ms 21104 KB Output is correct
2 Correct 215 ms 21588 KB Output is correct
3 Correct 220 ms 24536 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 217 ms 23608 KB Output is correct
2 Correct 219 ms 23580 KB Output is correct
3 Correct 276 ms 26192 KB Output is correct
4 Correct 40 ms 20748 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 90 ms 22256 KB Output is correct
2 Correct 125 ms 24060 KB Output is correct
3 Correct 117 ms 20048 KB Output is correct
4 Correct 221 ms 25160 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 228 ms 20820 KB Output is correct
2 Correct 232 ms 23520 KB Output is correct
3 Correct 197 ms 21416 KB Output is correct
4 Correct 237 ms 27268 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1271 ms 53560 KB Output is correct
2 Correct 813 ms 26448 KB Output is correct
3 Correct 588 ms 20052 KB Output is correct
4 Runtime error 898 ms 65536 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1385 ms 51008 KB Output is correct
2 Correct 656 ms 26324 KB Output is correct
3 Correct 482 ms 20048 KB Output is correct
4 Runtime error 741 ms 65536 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -