Submission #1246659

#TimeUsernameProblemLanguageResultExecution timeMemory
1246659CyberCowSphinx's Riddle (IOI24_sphinx)C++20
10 / 100
30 ms912 KiB
#include "sphinx.h" #include <bits/stdc++.h> using namespace std; vector<int> v[300]; vector<int> find_colours(int N, vector<int> X, vector<int> Y) { if(N <= 50) { vector<int> G(N, 0); vector<int> E(N, N); for (int i = 0; i < X.size(); i++) { v[X[i]].push_back(Y[i]); v[Y[i]].push_back(X[i]); } for (int i = 0; i < N; i++) { E[i] = 0; E[v[i][0]] = 0; int x = perform_experiment(E); for (int j = 0; j < N; j++) { E[i] = -1; E[v[i][0]] = j; int y = perform_experiment(E); if(x == y) { G[i] = j; break;; } } E[i] = N; E[v[i][0]] = N; } return G; } vector<int> harc(N, N); vector<int> bi; for (int i = 0; i < N; i++) { harc[i] = -1; if(i == 0) bi.push_back(2); else bi.push_back(perform_experiment(harc)); } int ne = 1; vector<int> ans; for (int i = 0; i < N; i++) { if(i == 0) ans.push_back(0); else { int st = 0; if(i == N - 1) { if(harc[i] == harc[i - 1]) st = 1; } else { if(harc[i] != harc[i - 1]) st = 1; } if(st == 1) { ans.push_back(ne); ne++; continue; } int l = 0, r = i - 2, anss = i - 1; while(l <= r) { int m = (l + r) / 2; vector<int> blblb(N, N); for (int j = 0; j <= m; j++) { blblb[j] = -1; } blblb[i] = -1; int x = perform_experiment(blblb); if(x == harc[m]) { anss= m; r = m - 1; } else l = m + 1; } ans.push_back(ans[anss]); } } 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...