#include <bits/stdc++.h>
#include <cmath>
#define ll long long
using namespace std;
ll x,q,a;
ll odpowiedzi[100005];
ll tab[100005];
bool uzupelnij(ll a){
for(ll i=0;i<x;i++){
odpowiedzi[i]=0;
}
odpowiedzi[0]=tab[0];
for(ll i=1;i<x;i++){
if(i-a>=0){
odpowiedzi[i]=tab[i]-tab[i-1]+odpowiedzi[i-a];
}else{
odpowiedzi[i]=tab[i]-tab[i-1];
}
if(odpowiedzi[i]<0){
return false;
}
if(odpowiedzi[i]>0 && i+a>x){
return false;
}
}
return true;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>x;
ll suma=0;
for(ll i=0;i<x;i++){
cin>>tab[i];
suma+=tab[i];
}
ll poc=1,kon=x,sr;
for(ll i=x;i>0;i--){
if(suma%i==0){
if(uzupelnij(i)){
cout<<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 56 57 58 59 60 61 62 63 | #include <bits/stdc++.h> #include <cmath> #define ll long long using namespace std; ll x,q,a; ll odpowiedzi[100005]; ll tab[100005]; bool uzupelnij(ll a){ for(ll i=0;i<x;i++){ odpowiedzi[i]=0; } odpowiedzi[0]=tab[0]; for(ll i=1;i<x;i++){ if(i-a>=0){ odpowiedzi[i]=tab[i]-tab[i-1]+odpowiedzi[i-a]; }else{ odpowiedzi[i]=tab[i]-tab[i-1]; } if(odpowiedzi[i]<0){ return false; } if(odpowiedzi[i]>0 && i+a>x){ return false; } } return true; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>x; ll suma=0; for(ll i=0;i<x;i++){ cin>>tab[i]; suma+=tab[i]; } ll poc=1,kon=x,sr; for(ll i=x;i>0;i--){ if(suma%i==0){ if(uzupelnij(i)){ cout<<i; return 0; } } } } |
English