#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
typedef long long ll;
const int MAXN = 1e5 + 7;
ll tree[4 * MAXN];
ll lazy[4 * MAXN];
ll a[MAXN];
void solve(){
int n;
cin >> n;
vector<ll> a(n + 2, 0);
ll S = 0;
for(int i = 1; i <= n; i++){
cin >> a[i];
S += a[i];
}
vector<ll> divs;
for(ll i = 1; i * i <= S; i++){
if(S % i == 0){
if (i <= n) divs.push_back(i);
ll d2 = S/i;
if (d2 != i && d2 <= n) divs.push_back(d2);
}
}
sort(divs.rbegin(), divs.rend());
vector<ll> diff(n + 2, 0);
for(int i = 1; i <= n + 1; i++){
diff[i] = a[i] - a[i - 1];
}
vector<ll> x(n + 2);
for(ll k : divs){
bool ok = true;
for(int i = 1; i <= n + 1; i++){
x[i] = diff[i] + ((i > k) ? x[i - k] : 0);
if(x[i] < 0){
ok = false;
break;
}
}
if(ok){
cout << k << '\n';
return;
}
}
cout << 1 << '\n';
}
bool multi = 0;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t = 1;
if(multi) cin >> t;
while(t--){
solve();
}
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #include <bits/stdc++.h> using namespace std; #define fi first #define se second typedef long long ll; const int MAXN = 1e5 + 7; ll tree[4 * MAXN]; ll lazy[4 * MAXN]; ll a[MAXN]; void solve(){ int n; cin >> n; vector<ll> a(n + 2, 0); ll S = 0; for(int i = 1; i <= n; i++){ cin >> a[i]; S += a[i]; } vector<ll> divs; for(ll i = 1; i * i <= S; i++){ if(S % i == 0){ if (i <= n) divs.push_back(i); ll d2 = S/i; if (d2 != i && d2 <= n) divs.push_back(d2); } } sort(divs.rbegin(), divs.rend()); vector<ll> diff(n + 2, 0); for(int i = 1; i <= n + 1; i++){ diff[i] = a[i] - a[i - 1]; } vector<ll> x(n + 2); for(ll k : divs){ bool ok = true; for(int i = 1; i <= n + 1; i++){ x[i] = diff[i] + ((i > k) ? x[i - k] : 0); if(x[i] < 0){ ok = false; break; } } if(ok){ cout << k << '\n'; return; } } cout << 1 << '\n'; } bool multi = 0; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; if(multi) cin >> t; while(t--){ solve(); } return 0; } |
English