Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Solutie - Moca Andrei - O(n * logn)
- #include <bits/stdc++.h>
- #define ENTER ios::sync_with_stdio(false); fin.tie(0); fout.tie(0);
- #define EXIT fin.close(); fout.close(); return 0;
- using namespace std;
- ifstream fin("secvmaxval.in");
- ofstream fout("secvmaxval.out");
- int64_t val, x, minim = 1e9;
- vector<int64_t> sp;
- int n, lmax;
- inline bool Check(int l);
- int main()
- {
- ENTER
- fin >> n >> val;
- sp = vector<int64_t>(n + 1);
- for (int i = 1; i <= n; ++i)
- {
- fin >> x;
- sp[i] = sp[i - 1] + x;
- minim = min(minim, x);
- }
- if (val < minim) {
- fout << 0; EXIT
- }
- if (val >= sp[n]) {
- fout << n; EXIT
- }
- int st = 1, dr = n, mij;
- bool ok;
- while (st <= dr)
- {
- mij = (st + dr) / 2;
- ok = Check(mij);
- if (ok)
- {
- lmax = max(lmax, mij);
- st = mij + 1;
- }
- else dr = mij - 1;
- }
- fout << lmax;
- EXIT
- }
- bool Check(int l)
- {
- for (int i = 1; i <= n - l + 1; ++i)
- if (sp[i + l - 1] - sp[i - 1] <= val)
- return true;
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement