Submission #958723

#TimeUsernameProblemLanguageResultExecution timeMemory
958723aegHomecoming (BOI18_homecoming)C++17
100 / 100
92 ms55612 KiB
#include <bits/stdc++.h>
#include "homecoming.h"

using namespace std;

long long solve(int n, int k, int *a, int *b){
	long long cur, cost, nextcost, maxi = INT_MIN, maxj = INT_MIN;
	cost = accumulate(b, b + k, 0ll);
	maxi = a[0] - cost;
	cur = a[0] - cost;
	for(int i = 1; i < n; i++){
		cost -= b[i - 1];
		if(i + k - 1 < n) nextcost = b[k + i - 1];
		else nextcost = 0;
		cur = max(cur + a[i] - nextcost, maxi + a[i] - (cost + nextcost));
		maxi = max(maxi, cur);
		cost += nextcost;
	}
	cost = accumulate(b, b + k, 0ll);
	maxj = max(0ll, a[0] - cost);
	cur = a[0] - cost;
	for(int i = 1; i < n; i++){
		cost -= b[i - 1];
		if(i + k - 1 < n) nextcost = b[k + i - 1];
		else nextcost = b[k + i - 1 - n];
		cur = max(cur + a[i] - nextcost, maxj + a[i] - (cost + nextcost));
		maxj = max(maxj, cur);
		cost += nextcost;
	}
	maxi = max(maxi, maxj);
	return maxi;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...