#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define int long long
const int max_n = 100000;
int v[max_n + 7];
int n;
int simulate[max_n + 7];
bool dziala(int k)
{
if(k > n)return false;
int sum = 0;
for(int i = 1; i <= n; i++)
{
if(i > k)sum -= simulate[i - k];
simulate[i] -= sum;
if(simulate[i] < 0)return false;
if(n - i + 1 >= k)
sum += simulate[i];
else if(simulate[i] != 0)return false;
}
return true;
}
void reset()
{
for(int i = 1; i <= n; i++)simulate[i] = v[i];
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
int sum = 0;
for(int i = 1; i <= n; i++)
{
cin >> v[i];
sum += v[i];
}
vector <int> ans;
for(int i = 1; i <= sqrt(sum); i++)
{
if(sum % i == 0)ans.pb(i);
}
for(int i = 1; i <= sqrt(sum); i++)
{
if(sum % i == 0)ans.pb(sum / i);
}
sort(ans.begin() , ans.end());
for(int i = ans.size() - 1; i >= 0; i--)
{
if(dziala(ans[i]))
{
cout << ans[i];
return 0;
}
reset();
}
exit(67);
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 | #include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define int long long const int max_n = 100000; int v[max_n + 7]; int n; int simulate[max_n + 7]; bool dziala(int k) { if(k > n)return false; int sum = 0; for(int i = 1; i <= n; i++) { if(i > k)sum -= simulate[i - k]; simulate[i] -= sum; if(simulate[i] < 0)return false; if(n - i + 1 >= k) sum += simulate[i]; else if(simulate[i] != 0)return false; } return true; } void reset() { for(int i = 1; i <= n; i++)simulate[i] = v[i]; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; int sum = 0; for(int i = 1; i <= n; i++) { cin >> v[i]; sum += v[i]; } vector <int> ans; for(int i = 1; i <= sqrt(sum); i++) { if(sum % i == 0)ans.pb(i); } for(int i = 1; i <= sqrt(sum); i++) { if(sum % i == 0)ans.pb(sum / i); } sort(ans.begin() , ans.end()); for(int i = ans.size() - 1; i >= 0; i--) { if(dziala(ans[i])) { cout << ans[i]; return 0; } reset(); } exit(67); return 0; } |
English