#include<bits/stdc++.h>
using namespace std;
using ll = long long;
bool check(vector<int>V,int k){
int n = V.size();
vector<int>dod(n + 9);
int akt = 0;
for(int i = 0; i < n; i++){
akt += dod[i];
V[i] -= akt;
if(V[i] < 0)return 0;
if(!V[i])continue;
int s = V[i];
if(i + k > n)return 0;
dod[i + k] -= s;
V[i] += s;
akt += s;
}
return 1;
}
int main(){
int n;
cin >> n;
vector<int>V(n);
for(auto &x : V)cin >> x;
ll s = 0;
for(auto x : V)s += x;
for(int i = n; i >= 1; i --){
if(s % i == 0 && check(V,i)){
cout << i << '\n';
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 | #include<bits/stdc++.h> using namespace std; using ll = long long; bool check(vector<int>V,int k){ int n = V.size(); vector<int>dod(n + 9); int akt = 0; for(int i = 0; i < n; i++){ akt += dod[i]; V[i] -= akt; if(V[i] < 0)return 0; if(!V[i])continue; int s = V[i]; if(i + k > n)return 0; dod[i + k] -= s; V[i] += s; akt += s; } return 1; } int main(){ int n; cin >> n; vector<int>V(n); for(auto &x : V)cin >> x; ll s = 0; for(auto x : V)s += x; for(int i = n; i >= 1; i --){ if(s % i == 0 && check(V,i)){ cout << i << '\n'; break; } } } |
English