Submission #126378

# Submission time Handle Problem Language Result Execution time Memory
126378 2019-07-07T14:25:47 Z Vardanyan Ball Machine (BOI13_ballmachine) C++14
3.84615 / 100
1000 ms 28908 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];
    }
   // 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:73: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 1090 ms 12536 KB Time limit exceeded
2 Execution timed out 1077 ms 19784 KB Time limit exceeded
3 Correct 588 ms 20032 KB Output is correct
4 Execution timed out 1080 ms 12536 KB Time limit exceeded
5 Execution timed out 1078 ms 12536 KB Time limit exceeded
6 Incorrect 16 ms 12664 KB Output isn't correct
7 Execution timed out 1068 ms 12536 KB Time limit exceeded
8 Incorrect 19 ms 12664 KB Output isn't correct
9 Execution timed out 1080 ms 12920 KB Time limit exceeded
10 Execution timed out 1087 ms 14460 KB Time limit exceeded
11 Execution timed out 1081 ms 19828 KB Time limit exceeded
12 Correct 587 ms 20080 KB Output is correct
13 Incorrect 613 ms 19844 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 321 ms 16168 KB Output isn't correct
2 Execution timed out 1028 ms 25372 KB Time limit exceeded
3 Incorrect 840 ms 23380 KB Output isn't correct
4 Incorrect 418 ms 17272 KB Output isn't correct
5 Execution timed out 1071 ms 16632 KB Time limit exceeded
6 Incorrect 420 ms 17144 KB Output isn't correct
7 Execution timed out 1076 ms 16700 KB Time limit exceeded
8 Incorrect 321 ms 16120 KB Output isn't correct
9 Incorrect 872 ms 26484 KB Output isn't correct
10 Incorrect 993 ms 25256 KB Output isn't correct
11 Execution timed out 1010 ms 25420 KB Time limit exceeded
12 Incorrect 896 ms 25584 KB Output isn't correct
13 Incorrect 941 ms 26356 KB Output isn't correct
14 Incorrect 759 ms 23408 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 410 ms 19448 KB Output isn't correct
2 Incorrect 964 ms 25844 KB Output isn't correct
3 Incorrect 793 ms 25184 KB Output isn't correct
4 Incorrect 632 ms 24048 KB Output isn't correct
5 Incorrect 668 ms 23156 KB Output isn't correct
6 Incorrect 644 ms 23924 KB Output isn't correct
7 Incorrect 645 ms 23104 KB Output isn't correct
8 Incorrect 773 ms 25204 KB Output isn't correct
9 Incorrect 910 ms 27188 KB Output isn't correct
10 Incorrect 995 ms 25844 KB Output isn't correct
11 Execution timed out 1085 ms 26484 KB Time limit exceeded
12 Incorrect 971 ms 25844 KB Output isn't correct
13 Execution timed out 1079 ms 28908 KB Time limit exceeded
14 Incorrect 821 ms 23608 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1075 ms 26916 KB Time limit exceeded
2 Incorrect 938 ms 25592 KB Output isn't correct
3 Incorrect 933 ms 28016 KB Output isn't correct
4 Execution timed out 1081 ms 26996 KB Time limit exceeded
5 Execution timed out 1042 ms 25172 KB Time limit exceeded
6 Incorrect 939 ms 25716 KB Output isn't correct
7 Incorrect 942 ms 25460 KB Output isn't correct
8 Incorrect 958 ms 28100 KB Output isn't correct
9 Incorrect 747 ms 23664 KB Output isn't correct