Submission #1103201

#TimeUsernameProblemLanguageResultExecution timeMemory
1103201horiaboeriuMouse (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 = 2007; int v[MAXN + 1], vrez[MAXN]; set<int> cand[MAXN + 1]; vector<int> q; set<int> fr; int rez2; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); static inline unsigned int genrand() { return uniform_int_distribution<unsigned int>(0, (unsigned int)-1)(rng); } void solve(int n) { int i, j, x, rez; for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { cand[i].insert(j); } } for (i = 1; i <= n; i++) { printf("i = %d ", i); while ((int)cand[i].size() > 1) { fr.clear(); for (j = 1; j <= n; j++) { fr.insert(j); } q.clear(); for (j = 1; j < i; j++) { q.push_back(v[j]); fr.erase(v[j]); } x = genrand() % n + 1; auto poz = cand[i].lower_bound(x); if (poz == cand[i].end()) { poz--; } q.push_back(*poz);//candidat random fr.erase(q[i - 1]); printf("%d\n", q[i - 1]); //in q sunt indexate de la 0 for (j = i + 1; j <= n; j++) { x = genrand() % n + 1; auto poz = fr.lower_bound(x); if (poz == fr.end()) { poz--; } x = *poz; q.push_back(x); fr.erase(x); } rez = query(q); rez2++; if (rez == i - 1) { printf("perm proasta: "); for (j = i; j <= n; j++) { printf("%d ", q[j - 1]); } printf("\n"); //nu sunt pe pozitiile bune cei de la i la n for (j = i; j <= n; j++) { cand[j].erase(q[j - 1]); } } else if (rez == n) { //am gasit permutarea for (j = 1; j <= n; j++) { cand[j].clear(); } } } v[i] = *cand[i].begin(); for (j = i + 1; j <= n; j++) { cand[j].erase(v[i]); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...