Submission #897244

# Submission time Handle Problem Language Result Execution time Memory
897244 2024-01-02T19:44:18 Z Mathias Ball Machine (BOI13_ballmachine) C++14
5.71429 / 100
1000 ms 25080 KB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+7;
const int LOG = 19;
int jp[MAXN][LOG];
int ojciec[MAXN];
int depth[MAXN];
int mini[MAXN];
int post[MAXN];
bool ball[MAXN];
vector<int> g[MAXN];
set<pair<int,int> > s;
int cnt=0;
void DFS(int x){
	//cout<<"wchodze x="<<x<<'\n';
	depth[x]=depth[ojciec[x]]+1;
	vector<pair<int,int> > vec;
	for(int i=0;i<g[x].size();i++){
		vec.push_back({mini[g[x][i]], g[x][i]});
		//cout<<g[x][i]<<' '<<mini[g[x][i]]<<'\n';
	}
	sort(vec.begin(),vec.end());
	for(int i=0;i<vec.size();i++) DFS(vec[i].second);
	s.insert({++cnt,x});
	post[x]=cnt;
}
void DFS1(int x){
	for(int i=0;i<g[x].size();i++){
		DFS1(g[x][i]);
	}
	mini[x]=x;
	for(int i=0;i<g[x].size();i++) mini[x]=min(mini[x],g[x][i]);
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int n,q,x,r,a,b;
	pair<int,int> p;
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>x;
		ojciec[i]=x;
		if(x==0) r=i;
		else g[x].push_back(i);
	}
	DFS1(r);
	DFS(r);
	while(q--){
		cin>>a>>b;
		if(a==1){
			while(b--){
				auto it=s.begin();
				s.erase(it);
				p=*it;
				ball[p.second]=1;
				if(b==0){
					cout<<p.second<<'\n';
				}
			}
		}
		else{
			x=b;
			while(x>0){
				if(ball[ojciec[x]]) x=ojciec[x];
				else break;
			}
			ball[x]=0;
			s.insert({mini[x],x});
				cout<<depth[b]-depth[x]<<'\n';
		}
	}
	return 0;
}
			

Compilation message

ballmachine.cpp: In function 'void DFS(int)':
ballmachine.cpp:18:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |  for(int i=0;i<g[x].size();i++){
      |              ~^~~~~~~~~~~~
ballmachine.cpp:23:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |  for(int i=0;i<vec.size();i++) DFS(vec[i].second);
      |              ~^~~~~~~~~~~
ballmachine.cpp: In function 'void DFS1(int)':
ballmachine.cpp:28:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  for(int i=0;i<g[x].size();i++){
      |              ~^~~~~~~~~~~~
ballmachine.cpp:32:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |  for(int i=0;i<g[x].size();i++) mini[x]=min(mini[x],g[x][i]);
      |              ~^~~~~~~~~~~~
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:46:5: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized]
   46 |  DFS(r);
      |  ~~~^~~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 4696 KB Output isn't correct
2 Execution timed out 1059 ms 9984 KB Time limit exceeded
3 Incorrect 42 ms 9812 KB Output isn't correct
4 Execution timed out 1030 ms 4696 KB Time limit exceeded
5 Incorrect 1 ms 4696 KB Output isn't correct
6 Incorrect 1 ms 4700 KB Output isn't correct
7 Execution timed out 1097 ms 4700 KB Time limit exceeded
8 Incorrect 1 ms 4700 KB Output isn't correct
9 Incorrect 4 ms 4956 KB Output isn't correct
10 Execution timed out 1065 ms 5980 KB Time limit exceeded
11 Incorrect 62 ms 9808 KB Output isn't correct
12 Incorrect 43 ms 9728 KB Output isn't correct
13 Incorrect 74 ms 10064 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 23 ms 8796 KB Output isn't correct
2 Incorrect 170 ms 18312 KB Output isn't correct
3 Incorrect 47 ms 11652 KB Output isn't correct
4 Execution timed out 1048 ms 9052 KB Time limit exceeded
5 Incorrect 51 ms 9296 KB Output isn't correct
6 Incorrect 43 ms 8968 KB Output isn't correct
7 Execution timed out 1072 ms 7956 KB Time limit exceeded
8 Incorrect 21 ms 8792 KB Output isn't correct
9 Incorrect 79 ms 18516 KB Output isn't correct
10 Incorrect 179 ms 18628 KB Output isn't correct
11 Incorrect 71 ms 18256 KB Output isn't correct
12 Incorrect 74 ms 15444 KB Output isn't correct
13 Incorrect 98 ms 22416 KB Output isn't correct
14 Incorrect 55 ms 11816 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 723 ms 11600 KB Output is correct
2 Execution timed out 1063 ms 15188 KB Time limit exceeded
3 Execution timed out 1047 ms 20420 KB Time limit exceeded
4 Execution timed out 1060 ms 15596 KB Time limit exceeded
5 Incorrect 924 ms 15640 KB Output isn't correct
6 Execution timed out 1039 ms 15404 KB Time limit exceeded
7 Incorrect 805 ms 13448 KB Output isn't correct
8 Execution timed out 1067 ms 20324 KB Time limit exceeded
9 Execution timed out 1060 ms 18260 KB Time limit exceeded
10 Execution timed out 1046 ms 18104 KB Time limit exceeded
11 Execution timed out 1029 ms 18104 KB Time limit exceeded
12 Execution timed out 1067 ms 15244 KB Time limit exceeded
13 Execution timed out 1099 ms 24400 KB Time limit exceeded
14 Correct 75 ms 11988 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 979 ms 18616 KB Output isn't correct
2 Incorrect 936 ms 15684 KB Output isn't correct
3 Execution timed out 1054 ms 24832 KB Time limit exceeded
4 Execution timed out 1062 ms 18544 KB Time limit exceeded
5 Incorrect 807 ms 18512 KB Output isn't correct
6 Incorrect 78 ms 18352 KB Output isn't correct
7 Incorrect 886 ms 15692 KB Output isn't correct
8 Execution timed out 1072 ms 25080 KB Time limit exceeded
9 Incorrect 49 ms 11732 KB Output isn't correct