Submission #1209692

#TimeUsernameProblemLanguageResultExecution timeMemory
1209692trimkusSphinx's Riddle (IOI24_sphinx)C++20
24 / 100
36 ms1176 KiB
#include "sphinx.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> E;
const int MAXN = 250;
vector<vector<int>> adj(MAXN);
int expected(int N) {
  set<int> st;
  for (int i = 0; i < N; ++i) {
    if (E[i] == -1) continue;
    st.insert(E[i]);
  }
  return (int)st.size();
}

std::vector<int> find_colours(int N, std::vector<int> X, std::vector<int> Y) {
  int M = (int)X.size();
  for (int i = 0; i < M; ++i) {
    adj[X[i]].push_back(Y[i]);
    adj[Y[i]].push_back(X[i]);
  }
  E = vector<int>(N);
  vector<int> F(N);
  for (int i = 0; i < N; ++i) {
      int left = 0, right = N - 1;
      while (left < right) {
        // cerr << "NOW CHECKING INDEX #" << i << " , with interval [" << left << " ; " << right << "]\n"; 
        for (auto& u : E) u = N;
        int mid = (left + right) / 2;
        int pos = left;
        int j = 0;
        while (pos <= mid) {
          if (j == i) {
            j++;
            continue;
          }
          E[j++] = pos++;
        }
        // cout << "HERE!" << endl;
        E[i] = -1;
        int exp = expected(N);
        if (exp == perform_experiment(E)) {
          right = mid;
        } else {
          left = mid + 1;
        }
      }
      F[i] = right;
  }
  return F;
}
#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...