#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define pii pair<int,int>
using namespace std;
const int N = 2e5+1;
ll inc[N],A[N],n,sum = 0;
bool check(ll k){
ll ht = 0;
for(int i = 1;i <= n;i++){
ht += inc[i];
if(ht > A[i])return false;
if(ht < A[i] && i + k - 1 > n)return false;
if(ht < A[i]){
inc[i + k] -= A[i] - ht;
ht = A[i];
}
}
return true;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i = 1;i <= n;i++){
cin >> A[i];
sum += A[i];
}
ll ans = 1;
for(ll i = 1;i <= n;i++){
if(sum%i != 0)continue;
if(check(i))ans = i;
for(int j = 1;j <= n;j++)inc[j] = 0;
//cout << check(i) << " ";
}
cout << ans;
//bool x = check(3);
//cout << "\n" << x;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include<bits/stdc++.h> #define ll long long #define pb push_back #define pii pair<int,int> using namespace std; const int N = 2e5+1; ll inc[N],A[N],n,sum = 0; bool check(ll k){ ll ht = 0; for(int i = 1;i <= n;i++){ ht += inc[i]; if(ht > A[i])return false; if(ht < A[i] && i + k - 1 > n)return false; if(ht < A[i]){ inc[i + k] -= A[i] - ht; ht = A[i]; } } return true; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i = 1;i <= n;i++){ cin >> A[i]; sum += A[i]; } ll ans = 1; for(ll i = 1;i <= n;i++){ if(sum%i != 0)continue; if(check(i))ans = i; for(int j = 1;j <= n;j++)inc[j] = 0; //cout << check(i) << " "; } cout << ans; //bool x = check(3); //cout << "\n" << x; } |
English