Submission #1320441

#TimeUsernameProblemLanguageResultExecution timeMemory
132044124ta_tdanhHappiness (Balkan15_HAPPINESS)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include <cstdlib>
// #include "happiness.h"
#define endl '\n'
#define fi first
#define se second
#define eb emplace_back
#define pb push_back
#define ce cout << endl
#define ALL(A) A.begin(), A.end()
#define FOR(i, l, r) for (int i = l; i <= r; i++)
#define FOR2(i, l, r) for (int i = l; i >= r; i--)
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
using pii = pair<int, int>;
using str = string;
using ull = unsigned long long;
using ld = long double; 
const ll INF = 1e18;
const ll N = 1e12;
const int LOGN = 14;
const int C = 2000;
const int heavy = 500;
const int MOD = 1e9 + 7;
const int Q = 50000;
int dx[] = {0, 1, 0, -1}; // east, south, west, north
int dy[] = {1, 0, -1, 0};

// T_Danh - Tri An High School
struct SegmentTree {
private:
    struct NODE {
        ll sum = 0;   
        ll diff = 0;
        bool len_one = false;
        NODE *left = nullptr, *right = nullptr;
    };
    NODE *root = new NODE();
    ll n;

    NODE merge(NODE a, NODE b) {
        NODE res;
        res.sum = a.sum + b.sum;
        res.diff = max( (a.len_one == true ? 0 : a.diff), b.diff - a.sum);

        return res;
    }

    void push(NODE *cur) {
        if (!cur->left) cur->left = new NODE();
        if (!cur->right) cur->right = new NODE();
    }

    void update(NODE *cur, ll l, ll r, ll x , int val) {
        if (l == r) {
            cur->sum += x * val; 
            cur->diff = x;  
            cur->len_one = true;       
            return;
        }
        push(cur);
        ll mid = l + r >> 1;
        if (x <= mid) update(cur->left, l, mid, x , val);
        else update(cur->right, mid + 1, r, x , val);
        
        NODE res = merge(*(cur->left), *(cur->right));
        cur->sum = res.sum;
        cur->diff = res.diff;

    }

    NODE get(NODE *cur, ll l, ll r, ll u, ll v) {
        if (u <= l && r <= v) return *cur;
        
        ll mid = l + r >> 1;
        push(cur);

        if (v <= mid) return get(cur->left, l, mid, u, v);
        if (u > mid) return get(cur->right, mid + 1, r, u, v);
        
        return merge(get(cur->left, l, mid, u, v), get(cur->right, mid + 1, r, u, v));
    }

public:
    SegmentTree(ll n) : n(n) {}
    void upd(ll pos , int val) { update(root, 1, n, pos, val); }
    bool query(ll u, ll v) { 
        NODE res = get(root, 1, n, u, v);
        return (res.len_one == true ||  res.diff <= 1);
    }
}st(N + 1);
ll sum = 0;
// bool init(int coinsCount, long long maxCoinSize, long long coins[]){

//     // FOR(i,0,coinsCount - 1){
//     //     st.upd(coins[i]);
//     //     sum += coins[i];
//     // }
//     // return st.query(1 , min(sum , N));
// }
// bool is_happy(int event, int coinsCount, long long coins[]){

// }
void solve(){
    int n , m ;
    cin >> n >> m;
    int cnt1 = 0 ;
    FOR(i,0,n - 1){
        ll x;
        cin >> x;
        sum += x;
        st.upd(x , 1);
        if(x == 1) cnt1 ++;
    }
    cout << (cnt1 && st.query(1 , sum)) <<endl;
    int q;
    cin >> q;
    while(q--){
        int t, sz;
        cin >> t >> sz;
        if(t == 1){
            FOR(i,0,sz - 1){
                ll x;
                cin >> x;
                st.upd(x , 1);
                sum += x;
                if(x == 1) cnt1 ++;

            }
            cout << (cnt1 && st.query(1 , sum)) <<endl;
        }
        else{
            FOR(i, 0 , sz - 1){
                ll x ;
                cin >> x;
                st.upd(x , - 1);
                sum -= x;
                if(x == 1) cnt1 --;

            }
            cout << (cnt1 && st.query(1 , sum)) << endl;
        }
    }
}

 
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
 
    int t = 1;
    while (t--) solve();
    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccH1Fu6n.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc4fGbYA.o:happiness.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccH1Fu6n.o: in function `main':
grader.cpp:(.text.startup+0x9a): undefined reference to `init(int, long long, long long*)'
/usr/bin/ld: grader.cpp:(.text.startup+0x15b): undefined reference to `is_happy(int, int, long long*)'
collect2: error: ld returned 1 exit status