Submission #320852

# Submission time Handle Problem Language Result Execution time Memory
320852 2020-11-10T05:34:36 Z seedkin Lokahian Relics (FXCUP4_lokahia) C++17
0 / 100
2 ms 1004 KB
#include "lokahia.h"
#include <stdio.h>
 
int root[205]; // who is root?
int select[205]; // able to get mana?
 
int findRoot(int r, int leaf) {
	if(r == leaf) return select[r];
 
	int temp = root[leaf];
	select[r] += select[leaf];
	root[leaf] = r;
	select[leaf] = 0;	
 
	return temp == -1 ? select[r]: findRoot(r, temp);
}
 
int getRoot(int n) {
	int r = root[n];
	if(r == -1) return n;
	findRoot(r, n);
	root[n] = getRoot(r);
	return root[n];
}
 
int FindBase(int N){	
	int target = N / 2;	
	int boss[205];
	int bossNum = 0;
	
	for(int i =0; i < N; i++) {
		root[i] = -1;
		select[i] = 1;		
		boss[i] = 0;
	}
 
	for(int i =0; i< N;) {
		int s = 1;
		boss[bossNum++] = i;
		for(int j =i+1; j < N; j++) {
			int r = CollectRelics(i, j);
			if( r == -1) {
				s--;
				if(s == 0) {
					i = j+1;
					if(i == N) return -1;
					break;
				}
				continue;
			}
			int num = findRoot(r, i);
			num = findRoot(r,j);
			if(num > target) return r;
			s++;
		}
	}
 
	int c = boss[bossNum-1];
 
	for(int i =0; i < bossNum-1; i++) {
		int a = boss[i];		
        if(getRoot(c) == getRoot(a)) continue;
		int r = CollectRelics(c, a);
		if(r == -1) {
			int b = boss[i+1];
			for(int j = a+1; j < b; j++) {
                if(getRoot(c) == getRoot(j)) continue;
				if(root[j] != -1) continue;
				r = CollectRelics(c, j);
				if(r == -1) continue;
				int num = findRoot(r, c);
				num = findRoot(r, j);
				if(num > target) return r;
			}
			continue;
		}
		int num = findRoot(r, c);
		num = findRoot(r, a);
		if(num > target) return r;
	}
 
	if(root[c] == -1 && select[c] > target ) return c;
	else if(root[c] != -1 && select[getRoot(c)] > target) return root[c];
	return -1;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 620 KB Correct : C = 60
2 Runtime error 2 ms 1004 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Incorrect 1 ms 620 KB Wrong
4 Incorrect 1 ms 620 KB Wrong
5 Correct 2 ms 620 KB Correct : C = 99
6 Correct 1 ms 620 KB Correct : C = 169
7 Incorrect 1 ms 620 KB Wrong
8 Incorrect 1 ms 620 KB Wrong
9 Correct 1 ms 620 KB Correct : C = 100
10 Correct 1 ms 620 KB Correct : C = 191
11 Correct 2 ms 620 KB Correct : C = 111
12 Correct 1 ms 492 KB Correct : C = 2
13 Incorrect 1 ms 620 KB Wrong
14 Correct 1 ms 492 KB Correct : C = 59
15 Incorrect 1 ms 620 KB Wrong
16 Correct 1 ms 620 KB Correct : C = 171
17 Correct 1 ms 620 KB Correct : C = 103
18 Incorrect 1 ms 620 KB Wrong
19 Runtime error 2 ms 1004 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 2 ms 876 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Incorrect 1 ms 620 KB Wrong
22 Runtime error 2 ms 1004 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Correct 1 ms 620 KB Correct : C = 60
24 Runtime error 2 ms 876 KB Execution killed with signal 11 (could be triggered by violating memory limits)
25 Incorrect 1 ms 620 KB Wrong
26 Correct 1 ms 620 KB Correct : C = 100
27 Runtime error 1 ms 748 KB Execution killed with signal 11 (could be triggered by violating memory limits)