# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
960077 | penguin133 | Building 4 (JOI20_building4) | C++17 | 315 ms | 147248 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;
#define int long long
#define fi first
#define se second
#define pi pair <int, int>
#define pii pair <int, pi>
int n, A[1000005], B[1000005], memo[1000005][2], memo2[1000005][2];
int dp1(int x, int f){
if(x == 2 * n)return !f;
if(memo[x][f] != -1)return memo[x][f];
int val = (!f ? A[x] : B[x]);
int tmp = 1e18;
if(A[x + 1] >= val)tmp = min(tmp, dp1(x + 1, 0));
if(B[x + 1] >= val)tmp = min(tmp, dp1(x + 1, 1));
if(!f)tmp++;
return memo[x][f] = tmp;
}
int dp2(int x, int f){
if(x == 2 * n)return !f;
if(memo2[x][f] != -1)return memo2[x][f];
int val = (!f ? A[x] : B[x]);
int tmp = -1e18;
if(A[x + 1] >= val)tmp = max(tmp, dp2(x + 1, 0));
if(B[x + 1] >= val)tmp = max(tmp, dp2(x + 1, 1));
if(!f)tmp++;
return memo2[x][f] = tmp;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |