#include <bits/stdc++.h>
using namespace std;
void solution(long long n, vector<int> &a) {
long long suma = 0;
for (int i = 0; i < n; i++) suma+= a[i];
vector<int> div;
for (long long i = 1; i * i <= suma; i++) {
if (suma % i == 0) {
if (i <= n) div.push_back(i);
if (suma / i != i && (suma / i) <= n) div.push_back(suma / i);
}
}
sort(div.rbegin(), div.rend());
vector<int> diff(n + 1);
diff[0] = a[0];
diff[n] = -a[n - 1];
for (int i = 1; i < n; i++) diff[i] = a[i] - a[i - 1];
int k = 1;
vector<long long> fale(n + 1);
for (int curr_k : div) {
bool width = true;
for (int idx = 0; idx <= n; idx++) {
fale[idx] = diff[idx];
if (idx >= curr_k) fale[idx] += fale[idx - curr_k];
if (fale[idx] < 0) {
width = false;
break;
}
if (idx > n - k && fale[idx] != 0) {
width = false;
break;
}
}
if (width) {
k = curr_k;
break;
}
}
cout << k;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
long long n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
solution(n,a);
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 | #include <bits/stdc++.h> using namespace std; void solution(long long n, vector<int> &a) { long long suma = 0; for (int i = 0; i < n; i++) suma+= a[i]; vector<int> div; for (long long i = 1; i * i <= suma; i++) { if (suma % i == 0) { if (i <= n) div.push_back(i); if (suma / i != i && (suma / i) <= n) div.push_back(suma / i); } } sort(div.rbegin(), div.rend()); vector<int> diff(n + 1); diff[0] = a[0]; diff[n] = -a[n - 1]; for (int i = 1; i < n; i++) diff[i] = a[i] - a[i - 1]; int k = 1; vector<long long> fale(n + 1); for (int curr_k : div) { bool width = true; for (int idx = 0; idx <= n; idx++) { fale[idx] = diff[idx]; if (idx >= curr_k) fale[idx] += fale[idx - curr_k]; if (fale[idx] < 0) { width = false; break; } if (idx > n - k && fale[idx] != 0) { width = false; break; } } if (width) { k = curr_k; break; } } cout << k; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); long long n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; solution(n,a); return 0; } |
English