제출 #1150301

#제출 시각아이디문제언어결과실행 시간메모리
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...