Submission #1205322

#TimeUsernameProblemLanguageResultExecution timeMemory
1205322AndreySphinx's Riddle (IOI24_sphinx)C++20
28.50 / 100
136 ms1216 KiB
#include "sphinx.h" #include<bits/stdc++.h> using namespace std; int n; vector<int> haha[300]; vector<int> bruh(300); void dfs(int a) { bruh[a] = -1; for(int v: haha[a]) { if(bruh[v] != -1) { dfs(v); } } } int dude(vector<int> wut) { vector<int> yo(n,n); for(int i = 0; i < n; i++) { bruh[i] = 0; } for(int v: wut) { yo[v] = -1; bruh[v] = -1; } int ans = perform_experiment(yo); for(int i = 0; i < n; i++) { if(bruh[i] != -1) { dfs(i); ans--; } } return ans; } std::vector<int> find_colours(int N, std::vector<int> x, std::vector<int> y) { n = N; for(int i = 0; i < x.size(); i++) { haha[x[i]].push_back(y[i]); haha[y[i]].push_back(x[i]); } vector<int> ans(n); for(int i = 1; i < n; i++) { ans[i] = i; vector<int> wut(0); set<int> idk; for(int j = 0; j <= i; j++) { wut.push_back(j); if(j < i) { idk.insert(ans[j]); } } int c = (int)idk.size()-dude(wut)+1; for(int j = 0; j < c; j++) { int l = 0,r = i-1; while(l < r) { int mid = (l+r)/2; wut.clear(); idk.clear(); for(int k = l; k <= mid; k++) { if(ans[k] != i) { wut.push_back(k); idk.insert(ans[k]); } } wut.push_back(i); if(dude(wut) <= idk.size()) { r = mid; } else { l = mid+1; } } int a = ans[l]; for(int k = 0; k < i; k++) { if(ans[k] == a) { ans[k] = i; } } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...