#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int n;
vector<int> arr;
bool IsCorrect(int Case) {
int i, cur_sum = 0;
vector<int> starts_waves(n, 0);
for(i = 0; i < n; ++i) {
if(i >= Case)
cur_sum -= starts_waves[i - Case];
if(cur_sum > arr[i])
return false;
if(i <= n - Case) {
starts_waves[i] = arr[i] - cur_sum;
cur_sum = arr[i];
}
else if(cur_sum < arr[i])
return false;
}
return true;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int last_growth, root, i;
ll sum = 0;
cin >> n;
arr.resize(n, 0);
for(i = 0; i < n; ++i) {
cin >> arr[i];
sum += arr[i];
}
vector<ll> deviders;
root = sqrt(sum);
for(i = 1; i <= root; ++i) {
if(sum % (ll)i == 0) {
deviders.push_back(i);
deviders.push_back(sum / i);
}
}
sort(deviders.begin(), deviders.end());
i = upper_bound(deviders.begin(), deviders.end(), n) - deviders.begin() - 1;
for(; i >= 0; --i) {
if( IsCorrect(deviders[i]) ) {
cout << deviders[i];
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 | #include<bits/stdc++.h> using namespace std; using ll = long long; int n; vector<int> arr; bool IsCorrect(int Case) { int i, cur_sum = 0; vector<int> starts_waves(n, 0); for(i = 0; i < n; ++i) { if(i >= Case) cur_sum -= starts_waves[i - Case]; if(cur_sum > arr[i]) return false; if(i <= n - Case) { starts_waves[i] = arr[i] - cur_sum; cur_sum = arr[i]; } else if(cur_sum < arr[i]) return false; } return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int last_growth, root, i; ll sum = 0; cin >> n; arr.resize(n, 0); for(i = 0; i < n; ++i) { cin >> arr[i]; sum += arr[i]; } vector<ll> deviders; root = sqrt(sum); for(i = 1; i <= root; ++i) { if(sum % (ll)i == 0) { deviders.push_back(i); deviders.push_back(sum / i); } } sort(deviders.begin(), deviders.end()); i = upper_bound(deviders.begin(), deviders.end(), n) - deviders.begin() - 1; for(; i >= 0; --i) { if( IsCorrect(deviders[i]) ) { cout << deviders[i]; return 0; } } } |
English