Submission #1103195

#TimeUsernameProblemLanguageResultExecution timeMemory
1103195horiaboeriuMouse (info1cup19_mouse)C++17
0 / 100
86 ms448 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; const int MAXN = 256; const int MOD = 10003; int v[MAXN + 1]; set<int> cand[MAXN + 1]; vector<int> q; set<int> fr; int rez2, rez3; int genrand(int i, int nr) { rez3 = (rez3 * (nr + i) + i + 49 * rez3 + (nr * 3 * rez3)) % MOD; return rez3; } 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++) { while (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(i, cand[i].size()) % 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]); //in q sunt indexate de la 0 for (j = i + 1; j <= n; j++) { x = genrand(i, fr.size()) % 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) { //nu sunt pe pozitiile bune cei de la i la n for (j = i; j <= n; j++) { cand[j].insert(q[j - 1]); 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].insert(v[i]); cand[j].erase(v[i]); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...