#include <bits/stdc++.h>
#define un unsigned
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define per(i, a, b) for(ll i = a; i >= b; i--)
#define all(v) begin(v), end(v)
#define st first
#define nd second
using namespace std;
using ll = long long;
using bigi = __int128;
using pii = pair<ll, ll>;
const ll N = 2e5 + 5;
int tab[N];
int rtab[N];
bool check(ll n, ll c){
rep(i, 0, n * 2 + 1) rtab[i] = 0;
int r = 0;
rep(i, 0, n + 1){
r += rtab[i];
if(tab[i] + r < 0){
return false;
}
rtab[i + c] += tab[i] + r;
r = -tab[i];
}
return true;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
ll n;
cin >> n;
ll suma = 0;
rep(i, 0, n){
cin >> tab[i];
suma += tab[i];
}
per(i, n, 1){
if(suma % i == 0 && check(n, i)){
cout << i << '\n';
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 | #include <bits/stdc++.h> #define un unsigned #define rep(i, a, b) for(ll i = a; i < b; i++) #define per(i, a, b) for(ll i = a; i >= b; i--) #define all(v) begin(v), end(v) #define st first #define nd second using namespace std; using ll = long long; using bigi = __int128; using pii = pair<ll, ll>; const ll N = 2e5 + 5; int tab[N]; int rtab[N]; bool check(ll n, ll c){ rep(i, 0, n * 2 + 1) rtab[i] = 0; int r = 0; rep(i, 0, n + 1){ r += rtab[i]; if(tab[i] + r < 0){ return false; } rtab[i + c] += tab[i] + r; r = -tab[i]; } return true; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin >> n; ll suma = 0; rep(i, 0, n){ cin >> tab[i]; suma += tab[i]; } per(i, n, 1){ if(suma % i == 0 && check(n, i)){ cout << i << '\n'; return 0; } } } |
English