Submission #133261

#TimeUsernameProblemLanguageResultExecution timeMemory
133261ekremMinerals (JOI19_minerals)C++17
40 / 100
192 ms12364 KiB
#include "minerals.h" #include <bits/stdc++.h> #define st first #define nd second #define mp make_pair #define pb push_back #define sol (k+k) #define sag (k+k+1) #define orta ((bas+son)/2) #define coc g[node][i] #define mod 1000000007 #define inf 1000000009 #define MAXN 1000005 using namespace std; typedef long long ll; typedef pair < int , int > ii; typedef set < int > si; int n, top = 1, a[MAXN], u[MAXN]; si s; si :: iterator it, it2; int myrandom(int x){ return rand()%x; } void coz(si s, int x){ if((int)s.size() == 2){ vector < int > x; for(it = s.begin(); it != s.end(); it++) x.pb(*it); Answer(x[0], x[1]); return; } si a; int top = 0, onc = 0, don; for(it = s.begin(); it != s.end(); it++){ top++; don = top - Query(*it); // cout << *it << " " << don << endl; if(don > onc) a.insert(*it); onc = don; if(don >= x/2){ // cout << "Burda BOL" << endl; for(it2 = s.begin(); it2 != it; it2++){ top--; don = top - Query(*it2); if(don < onc) a.insert(*it2); onc = don; } Query(*it); break; } } for(it = a.begin(); it != a.end(); it++){ // cout << *it << endl; s.erase(*it); } coz(a, x/2); coz(s, x - x/2); } void Solve(int n) {n*= 2; srand(time(0)); ::n = n; for(int i = 1; i <= n; i++){ a[i] = i; s.insert(i); } coz(s, n/2); return; // random_shuffle(a + 1, a + n + 1, myrandom); // for(int i = 1; i <= n; i++) // cout << a[i] << " ";cout << endl; // n *= 2; for(int i = 1; i <= n; i++){ top++; int don = top - Query(a[i]); cout << i << " " << don << endl; if(don == 2 and 0){ for(int j = 1; j < i; j++){ if(u[a[j]]) continue; top--; int don = top - Query(a[j]); // cout << j << " " << don << endl; if(don == 1){ for(int k = j - 1; k >= 1; k--) if(!u[a[k]]){ top++; Query(a[k]); } u[a[j]] = u[a[i]] = 1; // cout << "Buldum " << i << " " << j << endl; Answer(a[i], a[j]); top--; Query(a[i]); break; } } // cout << "Bitti" << endl; } } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...