제출 #203326

#제출 시각아이디문제언어결과실행 시간메모리
203326theStaticMindMinerals (JOI19_minerals)C++14
0 / 100
5 ms376 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" 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++){ Query(A[i]); } int last = n; 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++) Query(A[i]); for(int i = 0; i < m; i++) Query(B[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; int last = 0; 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 = 1; i <= 2 * N; i++) Query(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...