#include <bits/stdc++.h>
using namespace std;
#define fors(u, n, s) for(int u = (s); u<(n); u++)
#define foru(u, n) fors(u, n, 0)
#define f first
#define s second
#define vec vector
#define pb push_back
#define sz(x) ((int)x.size())
typedef long long ll;
// #define debug(x) cout << __LINE__ << " | " << x << endl
#define debug(x) {}
bool check(vec<ll> &v, int delta){
int n = sz(v);
ll s = 0;
vec<ll> upd(n+1, 0);
foru(i, n){
s += upd[i];
if(s > v[i]) return false;
ll op = v[i]-s;
s += op;
if(op && i+delta > n) return false;
if(op) upd[i+delta] -= op;
}
s += upd[n];
return (s == 0);
}
void solve() {
int n; cin >> n;
vec<ll> v(n);
foru(i, n) cin >> v[i];
ll s = 0;
foru(i, n) s += v[i];
for(int i = min(s, (ll)1e5); i >= 1; i--){
if(s%i == 0 && check(v, i)){
cout << i << endl;
return;
}
}
}
int main()
{
// cin.tie(0); cout.tie(0);
// ios_base::sync_with_stdio(0);
srand(time(NULL));
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 | #include <bits/stdc++.h> using namespace std; #define fors(u, n, s) for(int u = (s); u<(n); u++) #define foru(u, n) fors(u, n, 0) #define f first #define s second #define vec vector #define pb push_back #define sz(x) ((int)x.size()) typedef long long ll; // #define debug(x) cout << __LINE__ << " | " << x << endl #define debug(x) {} bool check(vec<ll> &v, int delta){ int n = sz(v); ll s = 0; vec<ll> upd(n+1, 0); foru(i, n){ s += upd[i]; if(s > v[i]) return false; ll op = v[i]-s; s += op; if(op && i+delta > n) return false; if(op) upd[i+delta] -= op; } s += upd[n]; return (s == 0); } void solve() { int n; cin >> n; vec<ll> v(n); foru(i, n) cin >> v[i]; ll s = 0; foru(i, n) s += v[i]; for(int i = min(s, (ll)1e5); i >= 1; i--){ if(s%i == 0 && check(v, i)){ cout << i << endl; return; } } } int main() { // cin.tie(0); cout.tie(0); // ios_base::sync_with_stdio(0); srand(time(NULL)); solve(); return 0; } |
English