#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <tuple>
using namespace std;
using ll=long long;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int n=0, maxy=0, m=0;
cin >> n;
int a[n];
maxy=n;
long long sum=0;
for (int i=0;i<n;i++)
{
cin >> a[i];
sum+=a[i];
}
int kaz[n]={};
long long suma=0;
bool dob=true;
for (int i=n;i>0;i--)
{
if (sum % i!=0)
{
continue;
}
for (int x=0;x<n;x++)
{
kaz[x]=0;
}
suma=0;
dob=true;
for (int x=0;x<n;x++)
{
if (x>=i)
{
suma-=kaz[x-i];
}
if (a[x]-suma<0)
{
dob=false;
}
kaz[x]=a[x]-suma;
suma+=kaz[x];
if (x>n-i and kaz[x]>0)
{
dob = false;
}
if (not dob)
{
break;
}
}
if (dob)
{
cout << i;
break;
}
}
}
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 64 65 66 67 68 | #include <iostream> #include <vector> #include <string> #include <algorithm> #include <tuple> using namespace std; using ll=long long; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int n=0, maxy=0, m=0; cin >> n; int a[n]; maxy=n; long long sum=0; for (int i=0;i<n;i++) { cin >> a[i]; sum+=a[i]; } int kaz[n]={}; long long suma=0; bool dob=true; for (int i=n;i>0;i--) { if (sum % i!=0) { continue; } for (int x=0;x<n;x++) { kaz[x]=0; } suma=0; dob=true; for (int x=0;x<n;x++) { if (x>=i) { suma-=kaz[x-i]; } if (a[x]-suma<0) { dob=false; } kaz[x]=a[x]-suma; suma+=kaz[x]; if (x>n-i and kaz[x]>0) { dob = false; } if (not dob) { break; } } if (dob) { cout << i; break; } } } |
English