【模板】滑动窗口
难度:初阶
时间限制:1000ms
内存限制:256mb
题目描述
按顺序给出 n 个整数 a1...an,计算其中最长一段连续的总和不超过 k 的序列长度。
输入格式
第一行两个整数 n,k
第二行 n 个整数 a1...an
输出格式
一个整数表示答案

【模板】滑动窗口
难度:初阶
时间限制:1000ms
内存限制:256mb
题目描述
按顺序给出 n 个整数 a1...an,计算其中最长一段连续的总和不超过 k 的序列长度。
输入格式
第一行两个整数 n,k
第二行 n 个整数 a1...an
输出格式
一个整数表示答案

#include <iostream>
#include <deque>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
deque<int> q;
int res = 0, sum = 0;
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
q.push_back(x);
sum += x;
while (!q.empty() && sum > k)
{
sum -= q.front();
q.pop_front();
}
res = max(res, (int)q.size());
}
cout << res << endl;
return 0;
}