Submission #153585

# Submission time Handle Problem Language Result Execution time Memory
153585 2019-09-14T18:23:32 Z brcode Ball Machine (BOI13_ballmachine) C++14
12.1978 / 100
1000 ms 53464 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int n,q;
int root;
const int MAXN = 1e5+5;
const int MAXK = 25;
vector<int> v1[MAXN];
int par[MAXN][25];
int subtreemin[MAXN];

int currtime = 1;
bool occupied[MAXN];
int timer[MAXN];
int depth[MAXN];
bool cmp(int x,int y){
    return subtreemin[x]<subtreemin[y];
}
bool cmp2(int x,int y){
    return timer[x]<timer[y];
}
set<int,decltype(&cmp2)> s1(&cmp2);
void dfs(int curr){
    subtreemin[curr] = curr;
    for(int x:v1[curr]){
        depth[x] = depth[curr]+1;
        dfs(x);
        subtreemin[curr] = min(subtreemin[curr],subtreemin[x]);
    }
}
void dfs2(int curr){

    for(int x:v1[curr]){
        dfs2(x);
    }
    timer[curr] = currtime++;
    //cout<<curr<<" "<<timer[curr]<<endl;
    s1.insert(curr);
}
int addball(){
    int ans = *s1.begin();
    s1.erase(s1.begin());
    occupied[ans] = true;
    return ans;
}
int removeball(int x){
    int original = x;
    for(int i=19;i>=0;i--){
        if(par[x][i]!=-1 && occupied[par[x][i]]){
            x=par[x][i];
        }

    }
    occupied[x] = false;
    s1.insert(x);
    return depth[original]-depth[x];
}
int main(){
   cin>>n>>q;
   for(int i=1;i<=n;i++){
        int p;
        cin>>p;
        if(p==0){
            root = i;
            par[i][0] = -1;
            continue;
        }
        par[i][0] = p;
        v1[p].push_back(i);
   }
   depth[root] = 0;
   for(int i=1;i<=n;i++){
        subtreemin[i] = MAXN;

   }

   dfs(root);
   for(int i=1;i<=n;i++){
        sort(v1[i].begin(),v1[i].end(),cmp);
   }
   dfs2(root);
   for(int i=1;i<=MAXK;i++){
        for(int j=1;j<=n;j++){
            if(par[i][j-1] == -1){
                par[i][j] = -1;
            }else{
                par[i][j] = par[par[i][j-1]][j-1];
            }
        }
   }
   for(int i=1;i<=q;i++){
        int t;
        cin>>t;
        if(t==1){
            int val;
            cin>>val;
            int x;
            for(int j=1;j<=val;j++){
                x = addball();
             //   cout<<123<<" "<<x<<endl;
            }
            cout<<x<<endl;
        }else{
            int val;
            cin>>val;
            cout<<removeball(val)<<endl;
        }
   }
}

Compilation message

ballmachine.cpp: In function 'int main()':
ballmachine.cpp:104:19: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
             cout<<x<<endl;
                   ^
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 2724 KB Output isn't correct
2 Incorrect 564 ms 15388 KB Output isn't correct
3 Correct 455 ms 15280 KB Output is correct
4 Correct 5 ms 2680 KB Output is correct
5 Incorrect 6 ms 2680 KB Output isn't correct
6 Incorrect 7 ms 2936 KB Output isn't correct
7 Execution timed out 1076 ms 2808 KB Time limit exceeded
8 Incorrect 10 ms 2908 KB Output isn't correct
9 Incorrect 42 ms 3448 KB Output isn't correct
10 Incorrect 118 ms 5752 KB Output isn't correct
11 Incorrect 596 ms 15460 KB Output isn't correct
12 Correct 455 ms 15340 KB Output is correct
13 Incorrect 535 ms 15564 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 314 ms 7804 KB Output is correct
2 Runtime error 182 ms 46504 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 150 ms 40308 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Incorrect 398 ms 9980 KB Output isn't correct
5 Incorrect 398 ms 9552 KB Output isn't correct
6 Incorrect 397 ms 9792 KB Output isn't correct
7 Incorrect 388 ms 8788 KB Output isn't correct
8 Correct 318 ms 7732 KB Output is correct
9 Runtime error 167 ms 47164 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 166 ms 46328 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Incorrect 576 ms 24228 KB Output isn't correct
12 Incorrect 625 ms 22664 KB Output isn't correct
13 Correct 517 ms 24968 KB Output is correct
14 Runtime error 144 ms 40292 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Incorrect 316 ms 13876 KB Output isn't correct
2 Runtime error 150 ms 44024 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Incorrect 430 ms 22532 KB Output isn't correct
4 Incorrect 408 ms 20140 KB Output isn't correct
5 Incorrect 402 ms 19704 KB Output isn't correct
6 Incorrect 464 ms 19704 KB Output isn't correct
7 Incorrect 414 ms 18872 KB Output isn't correct
8 Incorrect 451 ms 22628 KB Output isn't correct
9 Runtime error 197 ms 47268 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 194 ms 46488 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 184 ms 46404 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 184 ms 44040 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 175 ms 53444 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Incorrect 637 ms 21364 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Runtime error 171 ms 47104 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 164 ms 44048 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 177 ms 53464 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 165 ms 47100 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 165 ms 46444 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 162 ms 46328 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 156 ms 44024 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 171 ms 53368 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 148 ms 40524 KB Execution killed with signal 11 (could be triggered by violating memory limits)