Submission #1271897

#TimeUsernameProblemLanguageResultExecution timeMemory
1271897mfong_123abcHappiness (Balkan15_HAPPINESS)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#include "happiness.h"

int n,m,q,e,k,a[1021000]={0},t[4021000]={0},sum=0,b[10];

void build(int v, int l, int r){
    if(l==r){ t[v]=a[l]; return; }
    int mid=(l+r)/2;
    build(v*2,l,mid); build(v*2+1,mid+1,r);
    t[v]=t[v*2]+t[v*2+1];
    // cout<<v<<" "<<l<<" "<<r<<" "<<t[v]<<" "<<t[v*2]<<" "<<t[v*2+1]<<"\n";
}

int query(int v, int l, int r, int tl, int tr){
    if(l>tr||r<tl)return 0;
    if(tl<=l&&tr>=r)return t[v];
    int mid=(l+r)/2;
    // cout<<v<<" "<<l<<" "<<r<<" "<<t[v]<<"\n";
    return query(v*2,l,mid,tl,tr)+query(v*2+1,mid+1,r,tl,tr);
}

void update(int v, int l, int r, int pos, int val){
    // cout<<v<<" "<<l<<" "<<r<<" "<<pos<<" "<<val<<"\n";
    if(pos<l||pos>r)return;
    if(l==r){
        t[v]+=val;
        return;
    }
    int mid=(l+r)/2;
    update(v*2,l,mid,pos,val); update(v*2+1,mid+1,r,pos,val);
    t[v]=t[v*2]+t[v*2+1];
}

bool check(){
    int w=1;
    while(w<=sum){
        int res=query(1,1,m,1,w);
        // cout<<w<<" "<<res<<"\n";
        if(res<w)return false;
        w=res+1;
    }
    return true;
}

bool init(int coinsCount, long long maxCoinSize, long long coins[]) {
    n=coinsCount; m=maxCoinSize; for(int i=1;i<=n;i++){int v=coins[i-1]; cin>>v; a[v]+=v; sum+=v; }
    build(1,1,m);
    return check();
}

bool is_happy(int event, int coinsCount, long long coins[]) {
    e=event; k=coinsCount; for(int i=1;i<=k;i++)b[i]=coins[i-1];
    for(int i=1;i<=k;i++)cin>>b[i];
    for(int i=1;i<=k;i++)sum+=e*b[i];
    for(int i=1;i<=k;i++)update(1,1,m,b[i],e*b[i]);
    return check();
}

// signed main(){
    // cin>>n>>m;
    // for(int i=1;i<=n;i++){int v; cin>>v; a[v]+=v; sum+=v; }
    // cin>>q;
    // build(1,1,m);
    // cout<<check()<<"\n";
    // while(q--){
    //     cin>>e>>k;
    //     for(int i=1;i<=k;i++)cin>>b[i];
    //     for(int i=1;i<=k;i++)sum+=e*b[i];
    //     for(int i=1;i<=k;i++)update(1,1,m,b[i],e*b[i]);
    //     cout<<check()<<"\n";
    // }
// }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccZKR2gc.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