#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector<ll> tab;
ll n;
bool spr(ll k){
ll suma = 0;
vector<ll> pom(n);
vector<ll> tab2 = tab;
for(ll i = 0; i < k; ++i){
if(suma > tab[i]) return false;
pom[i] = tab[i] - suma;
if(i < n-k+1) suma += pom[i];
tab2[i] -= suma;
}
for(ll i = k; i < n; ++i){
suma -= pom[i-k];
if(suma > tab[i]) return false;
pom[i] = tab[i] - suma;
if(i < n-k+1) suma += pom[i];
tab2[i] -= suma;
}
for(ll i = 0; i < n; ++i){
if(tab2[i] != 0) return false;
}
return true;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
ll suma = 0, maks = 0; cin >> n;
tab.resize(n);
for(ll i = 0; i < n; ++i){
cin >> tab[i];
suma += tab[i];
}
maks = n;
priority_queue<ll> dziel;
for(ll i = 1; i*i <= suma; ++i){
if(i <= maks && suma%i == 0) dziel.push(i);
if(suma/i <= maks && suma%(suma/i) == 0) dziel.push(suma/i);
}
while(!dziel.empty()){
if(spr(dziel.top())){
cout << dziel.top();
return 0;
}
dziel.pop();
}
cout << 1;
}
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 | #include <bits/stdc++.h> using namespace std; #define ll long long vector<ll> tab; ll n; bool spr(ll k){ ll suma = 0; vector<ll> pom(n); vector<ll> tab2 = tab; for(ll i = 0; i < k; ++i){ if(suma > tab[i]) return false; pom[i] = tab[i] - suma; if(i < n-k+1) suma += pom[i]; tab2[i] -= suma; } for(ll i = k; i < n; ++i){ suma -= pom[i-k]; if(suma > tab[i]) return false; pom[i] = tab[i] - suma; if(i < n-k+1) suma += pom[i]; tab2[i] -= suma; } for(ll i = 0; i < n; ++i){ if(tab2[i] != 0) return false; } return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll suma = 0, maks = 0; cin >> n; tab.resize(n); for(ll i = 0; i < n; ++i){ cin >> tab[i]; suma += tab[i]; } maks = n; priority_queue<ll> dziel; for(ll i = 1; i*i <= suma; ++i){ if(i <= maks && suma%i == 0) dziel.push(i); if(suma/i <= maks && suma%(suma/i) == 0) dziel.push(suma/i); } while(!dziel.empty()){ if(spr(dziel.top())){ cout << dziel.top(); return 0; } dziel.pop(); } cout << 1; } |
English