Submission #746942

#TimeUsernameProblemLanguageResultExecution timeMemory
746942Prieved1Fireworks (APIO16_fireworks)C++17
Compilation error
0 ms0 KiB
#include<iostream>#include<vector>#include<queue>using namespace std;struct pq { priority_queue<int, vector<int>, greater<int>> q; int offside=0; void push(int val) { q.push(val-offside); } int top(){return q.top()+offside;} void pop(){q.pop();} void move(int k){offside+=k;} int size(){return q.size();}};struct node{ priority_queue<int> lr; pq rr; int val=0; int sz(){return lr.size()+rr.size();} void add(int k) { if(!lr.size()) { lr.push(0); lr.push(k); rr.push(k); }else { int c=rr.top(); rr.pop(); rr.move(k); rr.push(c); rr.move(k); c=lr.top(); lr.pop(); lr.push(c+k); } }};void merge(node &a, node& b) { b.val+=a.val; while(a.lr.size()) { int i=a.lr.top(); a.lr.pop(); if(i<=b.lr.top()) { b.lr.push(i); } else { b.rr.push(i); //b.val+=i-b.lr.top(); b.lr.push(b.rr.top()); b.rr.pop(); b.val+=i-b.lr.top(); } } while(a.rr.size()) { int i=a.rr.top(); a.rr.pop(); if(i>=b.rr.top()) { b.rr.push(i); } else { b.lr.push(i); b.rr.push(b.lr.top()); b.lr.pop(); b.val+=b.rr.top()-i; } }}const int N=300010;vector<pair<int,int>> g[N];node res[N];void dfs(int at) { // res[at].add(0); for(auto to:g[at]) { dfs(to.first); res[to.first].add(to.second); if(res[at].sz()<res[to.first].sz()) { swap(res[at],res[to.first]); } merge(res[to.first], res[at]); }}int main(){ int n, m; cin >> n >> m; for(int i =2;i<=n+m;i++) { int p, c; cin >> p >> c; g[p].push_back({i,c}); } dfs(1); cout << res[1].val << endl; return 0;}

Compilation message (stderr)

fireworks.cpp:1:19: warning: extra tokens at end of #include directive
    1 | #include<iostream>#include<vector>#include<queue>using namespace std;struct pq {    priority_queue<int, vector<int>,    greater<int>> q;    int offside=0;    void push(int val) {        q.push(val-offside);    }    int top(){return q.top()+offside;}    void pop(){q.pop();}    void move(int k){offside+=k;}    int size(){return q.size();}};struct node{    priority_queue<int> lr;    pq rr;    int val=0;    int sz(){return lr.size()+rr.size();}    void add(int k) {        if(!lr.size()) {            lr.push(0);            lr.push(k);            rr.push(k);        }else {            int c=rr.top();            rr.pop();            rr.move(k);            rr.push(c);            rr.move(k);            c=lr.top();            lr.pop();            lr.push(c+k);        }    }};void merge(node &a, node& b) {    b.val+=a.val;    while(a.lr.size()) {        int i=a.lr.top();        a.lr.pop();        if(i<=b.lr.top()) {            b.lr.push(i);        }        else {            b.rr.push(i);            //b.val+=i-b.lr.top();            b.lr.push(b.rr.top());            b.rr.pop();            b.val+=i-b.lr.top();        }    }    while(a.rr.size()) {        int i=a.rr.top();        a.rr.pop();        if(i>=b.rr.top()) {            b.rr.push(i);        }        else {            b.lr.push(i);            b.rr.push(b.lr.top());            b.lr.pop();            b.val+=b.rr.top()-i;        }    }}const int N=300010;vector<pair<int,int>> g[N];node res[N];void dfs(int at) {    // res[at].add(0);    for(auto to:g[at]) {        dfs(to.first);        res[to.first].add(to.second);        if(res[at].sz()<res[to.first].sz())         {        swap(res[at],res[to.first]);        }        merge(res[to.first], res[at]);    }}int main(){    int n, m;    cin >> n >> m;    for(int i =2;i<=n+m;i++) {        int p, c;        cin >> p >> c;        g[p].push_back({i,c});    }    dfs(1);    cout << res[1].val << endl;    return 0;}
      |                   ^
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status