# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
27105 | gs14004 | Swap (BOI16_swap) | C++14 | 783 ms | 168568 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 <bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef long double llf;
int n, a[530000];
map<int, int> sol[200005];
int solve(int x, int r){
if(x > n) return -1;
if(sol[x].find(r) != sol[x].end()) return sol[x][r];
int minval = min({r, a[2*x], a[2*x+1]});
if(minval == r){
solve(2*x, a[2*x]);
solve(2*x+1, a[2*x+1]);
return sol[x][r] = x;
}
else if(minval == a[2*x]){
int ret = solve(2*x, r);
solve(2*x+1, a[2*x+1]);
return sol[x][r] = ret;
}
else{
int k1 = solve(2*x, r);
int k2 = solve(2*x+1, a[2*x]);
int k3 = solve(2*x, a[2*x]);
int k4 = solve(2*x+1, r);
if(min(k1, k2) < min(k3, k4)){
return sol[x][r] = k1;
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... |