Submission #1170035

#TimeUsernameProblemLanguageResultExecution timeMemory
1170035TlenekWodoruMinerals (JOI19_minerals)C++20
40 / 100
11 ms3908 KiB
#include "minerals.h" #include<bits/stdc++.h> using namespace std; void Solve(int n) { const int N=n*2; int last=0; vector<int>A,B; for(int i=1;i<=N;i++) { int u=Query(i); if(u!=last){A.push_back(i);} else{B.push_back(i);} last=u; } for(int i=1;i<=N;i++){Query(i);} vector<pair<int,int>>G(n,{0,n-1}); vector<vector<int>>V(n); while(true) { bool cv=0; for(int i=0;i<n;i++) { if(G[i].first==G[i].second){continue;} cv=1; const int mid=(G[i].first+G[i].second)>>1; V[mid].push_back(i); } if(cv==0){break;} for(int i=0;i<n;i++) { last=Query(A[i]); for(int u : V[i]) { int t=Query(B[u]); if(t==last) { G[u].second=i; } else { G[u].first=i+1; } Query(B[u]); } V[i].clear(); } for(int u : A){Query(u);} } for(int i=0;i<n;i++) { Answer(A[G[i].first],B[i]); } }
#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...