记录编号 570293 评测结果 AAAAAAAAAA
题目名称 最长子段 最终得分 100
用户昵称 Gravatarlihaoze 是否通过 通过
代码语言 C++ 运行时间 0.013 s
提交时间 2022-03-25 21:44:06 内存使用 2.18 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
#include <queue>
#include <map>
#define OPEN(_x) freopen(#_x".in", "r", stdin); freopen(#_x".out", "w", stdout)
#define MAX(_a, _b) [&](int __a, int __b) { return __a < __b ? __b : __a; }((_a), (_b))
#define MIN(_a, _b) [&](int __a, int __b) { return __a > __b ? __b : __a; }((_a), (_b))
#define fi first
#define se second

using ll = long long;
using PII = std::pair<int, int>;
namespace IO {
    template <typename T> inline T read() {
        char ch = getchar();
        T ret = 0, sig = 1;
        while(ch < '0' || ch > '9') { if(ch == '-') sig = -1; ch = getchar(); }
        while(ch >= '0' && ch <= '9') ret *= 10, ret += ch - 48, ch = getchar();
        return ret * sig;
    }
    template <typename T> inline void write(T out) {
		if(!out) { putchar('0'); return; }
        int stk[100], tt = 0;
        if(out < 0) out = -out, putchar('-');
        while(out) stk[tt++] = out % 10, out /= 10;
        for(register int i = --tt; i>=0; --i) putchar(stk[i] + 48);
        putchar(' ');
    }
    template <typename T> inline void read(T& ret) { ret = IO::read<T>(); }
    template <typename T, typename... Args> inline void read(T& x, Args&... args) { IO::read(x), IO::read(args...); }
    template <typename T, typename... Args> inline void write(T x, Args... args)  { IO::write(x), IO::write(args...); }
};

const int N = 2e5+10;
ll n, m;
ll a[N];

inline bool check(int x) {
    ll t = - (1ll << 63);
    for (register int i = x; i<=n; ++i) {
        t = std::max(t, a[i - x]);
        if (a[i] - t <= m) return true;
    }
    return false;
}

int main() {
    OPEN(longsubsequence);
    IO::read(n, m);
    for (register int i = 1; i<=n; ++i) IO::read(a[i]), a[i] += a[i-1];
    ll l = 1, r = n;
    while (l < r) {
        ll mid = l + r + 1 >> 1;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    IO::write(r);
    return 0;
}