Submission #247348

# Submission time Handle Problem Language Result Execution time Memory
247348 2020-07-11T08:53:37 Z oolimry Lokahian Relics (FXCUP4_lokahia) C++17
0 / 100
31 ms 17308 KB
#include "lokahia.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
 
int p[205];
int sz[205];
 
int findSet(int u){
  if(u == p[u]) return u;
  else return findSet(p[u]);
}
 
int SZ(int u){ return sz[findSet(u)]; }
 
void unionSet(int u, int P){
  u = findSet(u), P = findSet(P);
  p[u] = P;
  sz[P] += sz[u];
}
 
int FindBase(int N){
  srand(time(NULL));
  vector<int> v;
 
  if(N == 1){
	return 0;
  }
 
  for(int i = 0;i < N;i++) v.push_back(i);
 
  for(int i = 0;i < N;i++){
	p[i] = i;
	sz[i] = 1;
  }
 
  int cnt = 0;
  map<int,int> occur;
  
  vector<int> P;
  for(int i = N/4;i < N;i++){
	for(int j = 0;j < i*i;j++) P.push_back(i);  
  }
  
  while(cnt < 101){
	int a = P[rand() % P.size()], b = P[rand() % P.size()];
	if(a == b) continue;
	
	if((a+b)*2 < N) continue;
 
	cnt++;
	int x = CollectRelics(a,b);
	occur[x]++;
  }
 
  int best = 0;
  for(int i = 0;i < N;i++){
	if(occur[best] < occur[i]){
	  best = i;
	}
  }
 
  int total = 0;
  for(int i = 0;i < N;i++){
	if(i == best){
	  total++;
	  continue;
	}
 
	if(CollectRelics(i,best) != -1) total++;
  }
 
  //cout << best;
  if(total > (N/2)) return best;
  //assert(false);
  //cout << best;
  return -1;
}
# Verdict Execution time Memory Grader output
1 Correct 10 ms 4720 KB Correct : C = 220
2 Incorrect 28 ms 17256 KB Wrong
3 Correct 28 ms 17256 KB Correct : C = 299
4 Correct 28 ms 17256 KB Correct : C = 299
5 Correct 10 ms 4848 KB Correct : C = 220
6 Correct 28 ms 17256 KB Correct : C = 299
7 Correct 10 ms 4848 KB Correct : C = 219
8 Correct 27 ms 17256 KB Correct : C = 300
9 Correct 10 ms 4848 KB Correct : C = 220
10 Correct 5 ms 512 KB Correct : C = 105
11 Correct 28 ms 17192 KB Correct : C = 299
12 Correct 28 ms 17256 KB Correct : C = 300
13 Correct 28 ms 17256 KB Correct : C = 300
14 Correct 10 ms 4848 KB Correct : C = 220
15 Correct 27 ms 17256 KB Correct : C = 300
16 Correct 10 ms 4848 KB Correct : C = 219
17 Correct 31 ms 17256 KB Correct : C = 299
18 Correct 30 ms 17256 KB Correct : C = 299
19 Correct 28 ms 17308 KB Correct : C = 300
20 Correct 10 ms 4848 KB Correct : C = 219
21 Correct 5 ms 512 KB Correct : C = 0
22 Correct 10 ms 4848 KB Correct : C = 219
23 Correct 28 ms 17256 KB Correct : C = 300
24 Correct 10 ms 4848 KB Correct : C = 220
25 Correct 10 ms 4848 KB Correct : C = 219
26 Correct 27 ms 17256 KB Correct : C = 300
27 Correct 27 ms 17256 KB Correct : C = 299