Submission #1150301

#TimeUsernameProblemLanguageResultExecution timeMemory
1150301dostsBigger segments (IZhO19_segments)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3,unroll-loops")
using namespace std;
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " <<    
#define all(cont) cont.begin(),cont.end()
#define vi vector<int>

const int inf = 1e17,N = 2e6+1,MOD = (1LL<<61)-1,B = 23;

int add(int x,int y) {
    return ((x+y >= MOD)?(x+y-MOD):(x+y));
}

int mult(__int128_t x,__int128_t y) {
    return (x*y)%MOD;
}

int expo(int x,int y) {
    if (!y) return 1;
    int e = expo(x,y/2);
    e = mult(e,e);
    if (y&1) e = mult(e,x);
    return e;
}

struct Hash{
    vi roll;
    int n;
    Hash(string& s) {
        n = s.size();
        roll.resize(n+1);
        for (int i=1;i<=n;i++) {
            roll[i] = add(s[i-1],mult(B,roll[i-1]));
        }
    }

    int get(int l,int r) {
        if (l == 1) return roll[r];
        return add(roll[r],MOD-mult(expo(B,r-l+1),roll[l-1]));
    }
};
void solve() { 
    int n;
    cin >> n;
    vi a(n+1);
    for (int i=1;i<=n;i++) cin >> a[i];
    vi p(n+1,0),g(n+1),d(n+1);
    int ans = 0;
    int ptr = 0;
    g[0] = 0;
    for (int i=1;i<=n;i++) {
        p[i] = p[i-1]+a[i];
        while (ptr < i-1 && p[ptr+1]-p[g[ptr+1]-1] <= p[i]-p[ptr+1]) ptr++;
        g[i] = ptr;
        d[i] = d[g[i]]+1;
        ans = max(ans,d[i]);
    }
    cout << ans << '\n';
}

int32_t main() { 
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #ifdef Dodi 
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int t = 1;
    //cin >> t;
    while (t --> 0) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...