#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAXN = 1e5 + 7;
ll val[MAXN];
vector<ll> candidates;
ll sum, n;
void wczytaj(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> val[i];
sum += val[i];
}
}
bool check(ll k){
vector<ll> pref(n+1, 0);
for(int i = 1; i <= n; i++){
pref[i] += pref[i - 1];
if(pref[i] < val[i]){
ll tmp = val[i] - pref[i];
pref[i] = val[i];
if(i + k <= n) pref[i+k] -= tmp;
else if(i + k > n + 1) return 0;
}
else if(pref[i] > val[i]) return false;
}
return true;
}
int main(){
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
wczytaj();
for(ll c = 1; c * c <= sum; c++){
if(sum % c == 0){
if(c <= n) candidates.push_back(c);
if(sum <= n * c) candidates.push_back(sum / c);
}
}
for(int i = candidates.size() - 1; i >= 0; i--){
if(check(candidates[i])){
cout << candidates[i];
return 0;
}
}
}
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 47 48 49 50 51 52 53 54 55 | #include <bits/stdc++.h> using namespace std; #define ll long long const int MAXN = 1e5 + 7; ll val[MAXN]; vector<ll> candidates; ll sum, n; void wczytaj(){ cin >> n; for(int i = 1; i <= n; i++){ cin >> val[i]; sum += val[i]; } } bool check(ll k){ vector<ll> pref(n+1, 0); for(int i = 1; i <= n; i++){ pref[i] += pref[i - 1]; if(pref[i] < val[i]){ ll tmp = val[i] - pref[i]; pref[i] = val[i]; if(i + k <= n) pref[i+k] -= tmp; else if(i + k > n + 1) return 0; } else if(pref[i] > val[i]) return false; } return true; } int main(){ ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); wczytaj(); for(ll c = 1; c * c <= sum; c++){ if(sum % c == 0){ if(c <= n) candidates.push_back(c); if(sum <= n * c) candidates.push_back(sum / c); } } for(int i = candidates.size() - 1; i >= 0; i--){ if(check(candidates[i])){ cout << candidates[i]; return 0; } } } |
English