Submission #107257

# Submission time Handle Problem Language Result Execution time Memory
107257 2019-04-23T01:22:07 Z wilwxk Ball Machine (BOI13_ballmachine) C++11
0 / 100
144 ms 23664 KB
#include <bits/stdc++.h>
using namespace std;

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

const int MAXN=1e5+5;
vector<int> g[MAXN], ord;
priority_queue<int> pq;
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++) pq.push(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=pq.top();
				update(1, 1, n, ind, 1);
				pq.pop();
				// 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);
			pq.push(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 Incorrect 5 ms 2688 KB Output isn't correct
2 Runtime error 54 ms 11128 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 33 ms 11128 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Incorrect 4 ms 2688 KB Output isn't correct
5 Incorrect 5 ms 2660 KB Output isn't correct
6 Incorrect 6 ms 2816 KB Output isn't correct
7 Runtime error 7 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 5632 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Incorrect 28 ms 3544 KB Output isn't correct
11 Runtime error 40 ms 11368 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 36 ms 11264 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 28 ms 11008 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Incorrect 47 ms 5780 KB Output isn't correct
2 Runtime error 64 ms 19824 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 42 ms 15344 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Incorrect 82 ms 4600 KB Output isn't correct
5 Incorrect 80 ms 4472 KB Output isn't correct
6 Incorrect 90 ms 4536 KB Output isn't correct
7 Incorrect 76 ms 4476 KB Output isn't correct
8 Incorrect 61 ms 5744 KB Output isn't correct
9 Runtime error 73 ms 23664 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 70 ms 19876 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 73 ms 16240 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 54 ms 16112 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 57 ms 21488 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 44 ms 15344 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 35 ms 13940 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 69 ms 19824 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 49 ms 20648 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 42 ms 15984 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 50 ms 15348 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 45 ms 15476 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 73 ms 18412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 53 ms 20692 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 54 ms 17136 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 47 ms 16336 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 46 ms 18672 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 68 ms 19696 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 47 ms 21972 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 52 ms 15480 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 50 ms 17136 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 52 ms 20460 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Incorrect 91 ms 14320 KB Output isn't correct
4 Runtime error 45 ms 17136 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Incorrect 101 ms 8688 KB Output isn't correct
6 Incorrect 144 ms 11600 KB Output isn't correct
7 Runtime error 58 ms 20460 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Incorrect 120 ms 14324 KB Output isn't correct
9 Runtime error 46 ms 15472 KB Execution killed with signal 11 (could be triggered by violating memory limits)