Submission #203329

#TimeUsernameProblemLanguageResultExecution timeMemory
203329theStaticMindMinerals (JOI19_minerals)C++14
40 / 100
49 ms2616 KiB
#include<bits/stdc++.h> #define pb push_back #define ii pair<int,int> #define all(x) (x).begin(),(x).end() #define sz(x) (int)(x).size() #define INF 1000000000//00000000 #define modulo 1000000007 #define mod 998244353 //#define int long long int using namespace std; #include "minerals.h" int last = 0; void extract(vector<int>& A, vector<int>& B, vector<int>& X, vector<int>& Y){ int n = sz(A), m = sz(B); for(int i = 0; i < n; i++){ last = Query(A[i]); } for(int i = 0; i < m; i++){ int v = Query(B[i]); if(v == last){ X.pb(B[i]); } else Y.pb(B[i]); last = v; } for(int i = 0; i < n; i++) last = Query(A[i]); } void divide(vector<int>& A, vector<int>& B){ int n = A.size(); if(n == 1){ Answer(A[0], B[0]); return; } vector<int> X, Y; vector<int> tempA, tempB; for(int i = 0; i < n / 2; i++)tempA.pb(A[i]); for(int i = n / 2; i < n; i++)tempB.pb(A[i]); extract(tempA, B, X, Y); divide(tempA, X); divide(tempB, Y); } void Solve(int N) { vector<int> A, B; for(int i = 1; i <= 2 * N; i++){ int q = Query(i); if(last == q){ B.pb(i); } else{ A.pb(i); } last = q; } for(int i = 0; i < N; i++) last = Query(A[i]); divide(A, B); }
#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...