Submission #227615

#TimeUsernameProblemLanguageResultExecution timeMemory
227615_7_7_Minerals (JOI19_minerals)C++14
100 / 100
111 ms4480 KiB
#include "minerals.h" #include <bits/stdc++.h> //#define int long long //#pragma GCC optimize("Ofast") //#pragma comment(linker, "/stack:200000000") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4") #define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout); #define forev(i, b, a) for(int i = (b); i >= (a); --i) #define forn(i, a, b) for(int i = (a); i <= (b); ++i) #define all(x) x.begin(), x.end() #define sz(s) (int)s.size() #define pb push_back #define ppb pop_back #define mp make_pair #define s second #define f first using namespace std; typedef pair < long long, long long > pll; typedef pair < int, int > pii; typedef unsigned long long ull; typedef vector < pii > vpii; typedef vector < int > vi; typedef long double ldb; typedef long long ll; typedef double db; const int inf = 1e9, maxn = 4e5 + 148, mod = 1e9 + 7, N = 5e5 + 11; const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, block = 333; const pii base = mp(1171, 3307), Mod = mp(1e9 + 7, 1e9 + 9); const db eps = 1e-12, pi = 3.14159265359; const ll INF = 1e18; int prv, prv1; void query (int x) { prv1 = prv; prv = Query(x); } void calc (vi A, vi B, bool ok) { if (sz(A) == 1) { Answer(A[0], B[0]); return; } random_shuffle(all(A)); random_shuffle(all(B)); int m = 0.33 * sz(A); vi Al, Ar, Bl, Br; m = max(1, min(m, sz(A) - 1)); for (int i = 0; i < m; ++i) { query(A[i]); Al.pb(A[i]); } for (int i = m; i < sz(A); ++i) Ar.pb(A[i]); for (auto x : B) { if (sz(Al) == sz(Bl)) { Br.pb(x); continue; } if (sz(Ar) == sz(Br)) { Bl.pb(x); continue; } query(x); if (ok == (prv == prv1)) Br.pb(x); else Bl.pb(x); } calc(Al, Bl, ok ^ 1); calc(Ar, Br, ok); } void Solve(int n) { srand(time(0)); vi A, B; for (int i = 1; i <= n + n; ++i) { query(i); if (prv != sz(A)) A.pb(i); else B.pb(i); } calc(A, B, 1); }
#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...