Submission #107256

# Submission time Handle Problem Language Result Execution time Memory
107256 2019-04-23T01:19:10 Z wilwxk Ball Machine (BOI13_ballmachine) C++11
16.2271 / 100
1000 ms 32344 KB
#include <bits/stdc++.h>
using namespace std;

struct node {
	int mn, mni, cnt;
};

const int MAXN=1e5+5;
vector<int> g[MAXN], ord;
set<int> s;
node seg[MAXN*4];
int indt[MAXN], prof[MAXN];
int n, q;

void dfs(int cur) {
	for(auto viz : g[cur]) {
		prof[viz]=prof[cur]+1;
		dfs(viz);
	}
	ord.push_back(cur);
	indt[cur]=ord.size()-1;
}

int query(int sind, int ini, int fim, int qini, int qfim) {
	if(qini>fim||qfim<ini) return 0;
	if(qini<=ini&&qfim>=fim) return seg[sind].mni;
	int m=(ini+fim)/2; int e=sind*2; int d=e+1;
	int aa=query(e, ini, m, qini, qfim);
	int bb=query(d, m+1, fim, qini, qfim);
	if(prof[ord[aa]]<=prof[ord[bb]]) return aa;
	else return bb;
}

void update(int sind, int ini, int fim, int qind, int k) {
	if(qind<ini||qind>fim) return;
	if(ini==fim) {
		if(k==1) seg[sind].mn=prof[ord[ini]], seg[sind].cnt=0;
		else seg[sind].mn=MAXN, seg[sind].cnt=1;
		return;
	}
	int m=(ini+fim)/2; int e=sind*2; int d=e+1;
	update(e, ini, m, qind, k); update(d, m+1, fim, qind, k);

	seg[sind].mn=min(seg[e].mn, seg[d].mn);
	if(seg[sind].mn==seg[e].mn) seg[sind].mni=seg[e].mni;
	else seg[sind].mni=seg[d].mni;
	seg[sind].cnt=seg[e].cnt+seg[d].cnt;
}


void build(int sind, int ini, int fim) {
	if(ini==fim) {
		seg[sind].mn=MAXN;
		seg[sind].mni=ini;
		seg[sind].cnt=1;
		return;
	}
	int m=(ini+fim)/2; int e=sind*2; int d=e+1;
	build(e, ini, m); build(d, m+1, fim);
	seg[sind].mn=MAXN; seg[sind].mni=0;
	seg[sind].cnt=seg[e].cnt+seg[d].cnt;
}

int main() {
	scanf("%d %d", &n, &q);
	for(int i=1; i<=n; i++) {
		int a; scanf("%d", &a);
		g[a].push_back(i);
	}

	ord.push_back(0); prof[1]=1; dfs(1); prof[0]=MAXN;
	for(int i=1; i<=n; i++) s.insert(i);

	build(1, 1, n);

	while(q--) {
		int a, val; scanf("%d %d", &a, &val);
		if(a==1) {
			int ind;
			for(int i=1; i<=val; i++) {
				ind=*s.begin();
				update(1, 1, n, ind, 1);
				s.erase(s.begin());
				// printf("%d > %d // %d\n", i, ind, ord[query(1, 1, n, 1, n)]);
			}
			printf("%d\n", ord[ind]);
		}
		else {
			int cara=query(1, 1, n, indt[val], n);
			printf("%d\n", prof[val]-prof[ord[cara]]);
			update(1, 1, n, cara, -1);
			s.insert(cara);
			// printf("qu %d %d > %d\n", indt[val], n, ord[cara]);
		}

	}
}

Compilation message

ballmachine.cpp: In function 'int main()':
ballmachine.cpp:65:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &q);
  ~~~~~^~~~~~~~~~~~~~~~~
ballmachine.cpp:67:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a; scanf("%d", &a);
          ~~~~~^~~~~~~~~~
ballmachine.cpp:77:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a, val; scanf("%d %d", &a, &val);
               ~~~~~^~~~~~~~~~~~~~~~~~~
ballmachine.cpp:86:26: warning: 'ind' may be used uninitialized in this function [-Wmaybe-uninitialized]
    printf("%d\n", ord[ind]);
                          ^
# Verdict Execution time Memory Grader output
1 Execution timed out 1066 ms 2688 KB Time limit exceeded
2 Runtime error 120 ms 16760 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Correct 92 ms 8824 KB Output is correct
4 Runtime error 6 ms 5120 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Execution timed out 1059 ms 2688 KB Time limit exceeded
6 Runtime error 8 ms 5376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 8 ms 5376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 8 ms 5376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 10 ms 5888 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 15 ms 8060 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 46 ms 16636 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Correct 122 ms 8820 KB Output is correct
13 Runtime error 47 ms 16468 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Correct 79 ms 6136 KB Output is correct
2 Runtime error 170 ms 28536 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Correct 94 ms 12020 KB Output is correct
4 Runtime error 23 ms 11000 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 22 ms 10624 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 25 ms 10624 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 26 ms 10360 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Correct 52 ms 6240 KB Output is correct
9 Runtime error 159 ms 32344 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 219 ms 28524 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 72 ms 24696 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 71 ms 24412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Correct 120 ms 15020 KB Output is correct
14 Correct 100 ms 11964 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 53 ms 17976 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 112 ms 28112 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 63 ms 27128 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 53 ms 22652 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 51 ms 21880 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 54 ms 22008 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 86 ms 24956 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 106 ms 27256 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 76 ms 25536 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 73 ms 24668 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 87 ms 27100 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 130 ms 28000 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 90 ms 30392 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 66 ms 23540 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 77 ms 25512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 120 ms 28832 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Correct 154 ms 18548 KB Output is correct
4 Runtime error 68 ms 25464 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Incorrect 162 ms 12708 KB Output isn't correct
6 Incorrect 228 ms 15720 KB Output isn't correct
7 Runtime error 106 ms 28760 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Correct 127 ms 18488 KB Output is correct
9 Correct 133 ms 12020 KB Output is correct