Submission #126379

# Submission time Handle Problem Language Result Execution time Memory
126379 2019-07-07T14:30:01 Z Vardanyan Ball Machine (BOI13_ballmachine) C++14
3.84615 / 100
1000 ms 27760 KB
#include <bits/stdc++.h>
using namespace std;
const int N = 100*1000+5;
int par[N];
vector<int> g[N];
int depth[N];
int d[N][25];
int sub[N];
void dfs(int v,int p = 0){
    depth[v] = depth[p]+1;
    d[v][0] = par[v];
    sub[v] = v;
    for(int i = 0;i<g[v].size();i++){
        int to = g[v][i];
        if(to == p) continue;
        dfs(to,v);
        sub[v] = min(sub[v],sub[to]);
    }
}
pair<int,int> lca(int u,int v){
    bool f = false;
    if(depth[u]>depth[v]){
            swap(u,v);
            f = true;
    }
    int dif = depth[v]-depth[u];
    for(int i = 0;i<=20;i++){
        if((dif>>i)&1) v = d[v][i];
    }
    if(u == v) return {u,u};
   // cout<<u<< " "<<v<<endl;
    for(int i = 20;i>=0;i--){
        if(d[u][i] == d[v][i]) continue;
        u = d[u][i];
        v = d[v][i];
    }
    if(f) swap(u,v);
    return {u,v};
}
bool cmp(int u,int v){
    pair<int,int> x = lca(u,v);
    if(x.first == x.second) return depth[u]>depth[v];
    return sub[x.first]<sub[x.second];
}
int hrt[N];
bool used[N];
int main(){
    ios_base::sync_with_stdio(false);
    int n,q;
    cin>>n>>q;
    for(int i = 1;i<=n;i++){
        int x;
        cin>>x;
        if(!x) x = -1;
        par[i] = x;
        g[i].push_back(x);
        g[x].push_back(i);
    }
    memset(d,-1,sizeof(d));
    dfs(1);
    for(int k = 1;k<=20;k++){
        for(int i = 1;i<=n;i++){
            if(d[i][k-1]!=-1){
                d[i][k] = d[d[i][k-1]][k-1];
            }
        }
    }
    vector<int> all;
    for(int i = 1;i<=n;i++) all.push_back(i);
    sort(all.begin(),all.end(),cmp);
    //for(int i = 0;i<all.size();i++) cout<<all[i]<<" ";
    //cout<<endl;
    set<pair<int,int> > ms;
    for(int i = 0;i<all.size();i++){
            ms.insert({i,all[i]});
            hrt[all[i]] = i;
    }
    /*int x,y;
    while(cin>>x>>y){
        pair<int,int> w = lca(x,y);
        cout<<w.first<<" "<<w.second<<endl;
    }*/
    while(q--){
        int tp;
        cin>>tp;
        if(tp == 1){
            int k;
            cin>>k;
            while(k--){
                pair<int,int> x = *(ms.begin());
                ms.erase(ms.begin());
                used[x.second] = 1;
                if(!k){
                    cout<<x.second<<endl;
                }
            }
        }
        else{
            int x;
            cin>>x;
            int ans = 0;
           /* while(used[x]){
                int pr = par[x];
                if(pr == -1 || !used[pr]){
                    ms.insert({hrt[x],x});
                    used[x] = 0;
                    break;
                }
                ans++;
                x = par[x];
            }*/
            used[x] = 0;
            ms.insert({hrt[x],x});
            cout<<ans<<endl;
        }
    }
    return 0;
}

Compilation message

ballmachine.cpp: In function 'void dfs(int, int)':
ballmachine.cpp:13:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i<g[v].size();i++){
                   ~^~~~~~~~~~~~
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:74:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i<all.size();i++){
                   ~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Execution timed out 1072 ms 12536 KB Time limit exceeded
2 Execution timed out 1070 ms 19188 KB Time limit exceeded
3 Correct 593 ms 19572 KB Output is correct
4 Execution timed out 1082 ms 12536 KB Time limit exceeded
5 Execution timed out 1066 ms 12536 KB Time limit exceeded
6 Incorrect 16 ms 12664 KB Output isn't correct
7 Execution timed out 1080 ms 12664 KB Time limit exceeded
8 Incorrect 18 ms 12540 KB Output isn't correct
9 Execution timed out 1082 ms 12920 KB Time limit exceeded
10 Execution timed out 1091 ms 14072 KB Time limit exceeded
11 Execution timed out 1084 ms 19188 KB Time limit exceeded
12 Correct 578 ms 19348 KB Output is correct
13 Incorrect 614 ms 19316 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 293 ms 15608 KB Output isn't correct
2 Execution timed out 1030 ms 24600 KB Time limit exceeded
3 Incorrect 746 ms 22796 KB Output isn't correct
4 Incorrect 374 ms 16632 KB Output isn't correct
5 Execution timed out 1075 ms 16380 KB Time limit exceeded
6 Incorrect 423 ms 16668 KB Output isn't correct
7 Execution timed out 1081 ms 15992 KB Time limit exceeded
8 Incorrect 292 ms 15736 KB Output isn't correct
9 Incorrect 754 ms 25844 KB Output isn't correct
10 Execution timed out 1008 ms 24564 KB Time limit exceeded
11 Incorrect 974 ms 24820 KB Output isn't correct
12 Incorrect 832 ms 24868 KB Output isn't correct
13 Incorrect 944 ms 25840 KB Output isn't correct
14 Incorrect 740 ms 22640 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 377 ms 18936 KB Output isn't correct
2 Incorrect 890 ms 24856 KB Output isn't correct
3 Incorrect 736 ms 24308 KB Output isn't correct
4 Incorrect 551 ms 23280 KB Output isn't correct
5 Incorrect 607 ms 22388 KB Output isn't correct
6 Incorrect 560 ms 22900 KB Output isn't correct
7 Incorrect 584 ms 22108 KB Output isn't correct
8 Incorrect 767 ms 24184 KB Output isn't correct
9 Incorrect 793 ms 25972 KB Output isn't correct
10 Incorrect 893 ms 24564 KB Output isn't correct
11 Execution timed out 1058 ms 25204 KB Time limit exceeded
12 Incorrect 955 ms 24816 KB Output isn't correct
13 Execution timed out 1074 ms 27760 KB Time limit exceeded
14 Incorrect 808 ms 22768 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1075 ms 25896 KB Time limit exceeded
2 Incorrect 865 ms 24308 KB Output isn't correct
3 Incorrect 765 ms 27376 KB Output isn't correct
4 Execution timed out 1083 ms 25848 KB Time limit exceeded
5 Incorrect 990 ms 24436 KB Output isn't correct
6 Incorrect 842 ms 25076 KB Output isn't correct
7 Incorrect 935 ms 24216 KB Output isn't correct
8 Incorrect 823 ms 27420 KB Output isn't correct
9 Incorrect 759 ms 23024 KB Output isn't correct