# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
129021 | sealnot123 | Minerals (JOI19_minerals) | C++14 | 79 ms | 20084 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "minerals.h"
#include<bits/stdc++.h>
#define x first
#define y second
#define pb push_back
#define eb emplace_back
#define all(a) (a).begin(),(a).end()
#define SZ(a) (int)(a).size()
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PLL;
typedef pair<int,int> PII;
typedef double D;
typedef long double LD;
const int N = 43005;
vector<int> L[4*N], R[4*N];
int mineral[2*N];
void play(int t, int now, int n, vector<int> &l, vector<int> &r){
int last, a, i;
/*printf("n = %d\n",n);
for(i=0;i<n;i++) printf("%d ",l[i]);
printf("|| ");
for(i=0;i<n;i++) printf("%d ",r[i]);
printf("=================\n");*/
assert(n == SZ(l));
if(n == 1){
Answer(l[0], r[0]);
l.clear(); r.clear();
return ;
}
if(t == 0){
for(i = 0; i < n/2; i++){
last = Query(r[i]);
R[now<<1].pb(r[i]);
}
for(i = n/2; i < n; i++) R[now<<1|1].pb(r[i]);
}else{
for(i = n/2; i < n; i++){
last = Query(r[i]);
R[now<<1|1].pb(r[i]);
}
for(i = 0; i < n/2; i++) R[now<<1].pb(r[i]);
}
for(i = 0; i < n; i++){
a = Query(l[i]);
if(a != last) L[now<<1|1].pb(l[i]);
else L[now<<1].pb(l[i]);
last = a;
}
if(t == 2){
play(1, now<<1, n/2, L[now<<1], R[now<<1]);
play(0, now<<1|1, n-n/2, L[now<<1|1], R[now<<1|1]);
}else{
play(2, now<<1, n/2, L[now<<1], R[now<<1]);
play(1, now<<1|1, n-n/2, R[now<<1|1], L[now<<1|1]);
}
l.clear(); r.clear();
}
void Solve(int n) {
int last = 0, now = 2*n;
int i,j,k,l,a,b,c,d;
for(i = 1; i <= 2*n; i++) mineral[i] = i;
for(i = 1; i <= n; i++){
a = Query(mineral[i]);
if(a == last) Query(mineral[i]),swap(mineral[i], mineral[now--]), i--;
last = a;
}
for(i = 1; i <= n; i++) Query(mineral[i]);
for(i = 1; i <= n; i++) L[1].pb(mineral[i]), R[1].pb(mineral[i+n]);
play(0, 1, n, L[1], R[1]);
return ;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |