Submission #1103267

#TimeUsernameProblemLanguageResultExecution timeMemory
1103267horiaboeriuMouse (info1cup19_mouse)C++17
0 / 100
1 ms336 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; const int MAXN = 256; const int MOD = 200007; const int NIL = 0; int v[MAXN + 1], vrez[MAXN]; int cand[MAXN + 1][MAXN + 1], nrc[MAXN + 1], fr[MAXN + 1], next1[MAXN + 1]; int rez2, maxrez; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); static inline unsigned long long genrand() { return uniform_int_distribution<unsigned long long>(0, (unsigned long long)-1)(rng); } int mod(int x) { return x < 0 ? -x : x; } void solve(int n) { int i, j, x, rez, nr4, nrz; for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { cand[i][j] = 1; } nrc[i] = n; } vector<int> q; for (i = 1; i <= n; i++) { while (nrc[i] > 1) { nrz = n; for (j = 1; j <= n; j++) { fr[j] = 1; } q.clear(); for (j = 1; j < i; j++) { q.push_back(v[j]); fr[v[j]] = 0; nrz--; } nr4 = mod(genrand()) % nrc[i] + 1; x = 1; while (nr4 > 0) { nr4 -= cand[i][x]; x++; } x--; q.push_back(x);//candidat random fr[x] = 0; nrz--; //in q sunt indexate de la 0 for (j = i + 1; j <= n; j++) { nr4 = mod(genrand()) % nrz + 1; x = 1; while (nr4 > 0) { nr4 -= fr[x]; x++; } x--; q.push_back(x); fr[x] = 0; nrz--; } rez = query(q); rez2++; if (rez == i - 1) { //nu sunt pe pozitiile bune cei de la i la n for (j = i; j <= n; j++) { nrc[j] -= cand[j][q[j - 1]]; cand[j][q[j - 1]] = 0; } } else if (rez == n) { for (j = 1; j <= n; j++) { nrc[j] = 1; } } } x = 1; while (cand[i][x] == 0) { x++; } v[i] = x; for (j = i + 1; j <= n; j++) { nrc[j] -= cand[j][v[i]]; cand[j][v[i]] = 0; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...