悬关求助一本通
  • 板块学术版
  • 楼主BlackPanda
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/1/24 14:41
  • 上次更新2024/1/24 15:21:28
查看原帖
悬关求助一本通
486799
BlackPanda楼主2024/1/24 14:41

http://ybt.ssoier.cn:8088/problem_show.php?pid=1598

wa了12和20。

#include <bits/stdc++.h>
using namespace std; 

#define int long long
const int N = 2e5 + 10;

int n, m, a[N], ans, s[N];
deque<int> q;

void solve()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i ++ )
	{
		cin >> a[i];
		s[i] = s[i - 1] + a[i]; 
	}
	ans = LLONG_MIN;
	for (int i = 1; i <= n; i ++ )
	{
		while (!q.empty() && i - m > q.front())	q.pop_front();
		if (!q.empty()) ans = max(ans, s[i] - s[q.front()]);
		while (!q.empty() && s[q.back()] > s[i])	q.pop_back();
		q.push_back(i);
	}
	cout << ans;
	return ;
}

signed main()
{
	freopen("sum12.in", "r", stdin);
	solve();
	return 0;
 } 
2024/1/24 14:41
加载中...