#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define pb push_back
#define rep(i,a,b) for(int i = a; i <= b; i++)
#define irep(i,a,b) for(int i = a; i >= b; i--)
typedef long long ll;
typedef long double ld;
//typedef __int128 int128;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pi;
typedef pair<double,double> pd;
typedef pair<ll,ll> pl;
const int max_n = 1e5+7;
ll arr[max_n];
ll odj[max_n];
bool check(int s, int n){
//cout << "\ncheck, s: " << s << '\n';
rep(i,1,n) odj[i] = 0;
int akt = 0;
rep(i,1,n){
akt -= odj[i];
//cout << "i: " << i << " akt: " << akt << '\n';
if(akt > arr[i]) return 0;
if(akt < arr[i] && i > (n-s+1)) return 0;
odj[i+s] += arr[i]-akt;
akt = arr[i];
}
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n;
ll sum = 0;
rep(i,1,n){
cin >> arr[i];
sum += arr[i];
}
ll ans = 1;
rep(i,1,n){
if(sum%i != 0) continue;
if(check(i,n)) ans = i;
}
cout << ans;
return 0;
}
//g++ -O3 -static -Wall .cpp -std=c++17
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 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define pb push_back #define rep(i,a,b) for(int i = a; i <= b; i++) #define irep(i,a,b) for(int i = a; i >= b; i--) typedef long long ll; typedef long double ld; //typedef __int128 int128; typedef vector<int> vi; typedef vector<ll> vl; typedef pair<int,int> pi; typedef pair<double,double> pd; typedef pair<ll,ll> pl; const int max_n = 1e5+7; ll arr[max_n]; ll odj[max_n]; bool check(int s, int n){ //cout << "\ncheck, s: " << s << '\n'; rep(i,1,n) odj[i] = 0; int akt = 0; rep(i,1,n){ akt -= odj[i]; //cout << "i: " << i << " akt: " << akt << '\n'; if(akt > arr[i]) return 0; if(akt < arr[i] && i > (n-s+1)) return 0; odj[i+s] += arr[i]-akt; akt = arr[i]; } return 1; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; ll sum = 0; rep(i,1,n){ cin >> arr[i]; sum += arr[i]; } ll ans = 1; rep(i,1,n){ if(sum%i != 0) continue; if(check(i,n)) ans = i; } cout << ans; return 0; } //g++ -O3 -static -Wall .cpp -std=c++17 |
English