Submission #61506

# Submission time Handle Problem Language Result Execution time Memory
61506 2018-07-26T06:04:31 Z ainta(#1774) Homecoming (BOI18_homecoming) C++11
100 / 100
246 ms 63316 KB
#include "homecoming.h"
#include <algorithm>
#define N_ 2010000
using namespace std;

int A[N_], B[N_], n, K;
long long D[N_][2], res;

void Do() {
	int i;
	for (i = 0; i <= n; i++)D[i][0] = D[i][1] = -1e18;
	D[1][0] = B[1];
	for (i = 2; i <= n; i++) {
		D[i][0] = D[i - 1][0] + B[i];
		if (i >= K)D[i][0] = max(D[i][0], D[i - K + 1][1]);
		D[i][1] = max(max(D[i - 1][1], D[i - 1][0]) + A[i], D[i][0]);
	}
	res = max(res, D[n][0]);
	for (i = 0; i <= n; i++)D[i][0] = D[i][1] = -1e18;
	D[1][1] = A[1];
	for (i = 2; i <= n; i++) {
		D[i][0] = D[i - 1][0] + B[i];
		if (i >= K)D[i][0] = max(D[i][0], D[i - K + 1][1]);
		D[i][1] = max(max(D[i - 1][1], D[i - 1][0]) + A[i], D[i][0]);
	}
	res = max(res, max(D[n][0], D[n][1]));
}

void Rotate() {
	int i;
	int ta = A[1], tb = B[1];
	for (i = 1; i < n; i++)A[i] = A[i + 1], B[i] = B[i + 1];
	A[n] = ta, B[n] = tb;
}

long long int solve(int N, int k, int *a, int *b) {
	int i;
	res = 0;
	n = N, K = k;
	if (K == 1) {
		long long r = 0;
		for (i = 0; i < n; i++) {
			r += max(a[i]-b[i],0);
		}
		return r;
	}
	long long ss = 0, Mn = 0, pv = 0;
	for (i = 1; i <= n; i++) {
		ss += a[i-1] - b[i-1];
		if (Mn > ss)Mn = ss, pv = i;
	}
	for (i = 0; i < n; i++)A[i+1] = a[(pv+i)%n], B[i+1] = b[(pv+i)%n];
	for (i = 1; i <= n; i++)res += A[i];
	Do();
	for (i = 1; i <= n; i++)res -= B[i];
	return res;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 4 ms 436 KB Output is correct
4 Correct 3 ms 608 KB Output is correct
5 Correct 3 ms 608 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 4 ms 436 KB Output is correct
4 Correct 3 ms 608 KB Output is correct
5 Correct 3 ms 608 KB Output is correct
6 Correct 4 ms 788 KB Output is correct
7 Correct 3 ms 788 KB Output is correct
8 Correct 3 ms 788 KB Output is correct
9 Correct 3 ms 868 KB Output is correct
10 Correct 3 ms 868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 16208 KB Output is correct
2 Correct 6 ms 16208 KB Output is correct
3 Correct 128 ms 16304 KB Output is correct
4 Correct 5 ms 16304 KB Output is correct
5 Correct 13 ms 16304 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 4 ms 436 KB Output is correct
4 Correct 3 ms 608 KB Output is correct
5 Correct 3 ms 608 KB Output is correct
6 Correct 4 ms 788 KB Output is correct
7 Correct 3 ms 788 KB Output is correct
8 Correct 3 ms 788 KB Output is correct
9 Correct 3 ms 868 KB Output is correct
10 Correct 3 ms 868 KB Output is correct
11 Correct 63 ms 16208 KB Output is correct
12 Correct 6 ms 16208 KB Output is correct
13 Correct 128 ms 16304 KB Output is correct
14 Correct 5 ms 16304 KB Output is correct
15 Correct 13 ms 16304 KB Output is correct
16 Correct 246 ms 63236 KB Output is correct
17 Correct 94 ms 63236 KB Output is correct
18 Correct 208 ms 63236 KB Output is correct
19 Correct 172 ms 63236 KB Output is correct
20 Correct 175 ms 63316 KB Output is correct
21 Correct 184 ms 63316 KB Output is correct