Submission #746942

# Submission time Handle Problem Language Result Execution time Memory
746942 2023-05-23T09:09:17 Z Prieved1 Fireworks (APIO16_fireworks) C++17
Compilation error
0 ms 0 KB
#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

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