#include <bits/stdc++.h>
using namespace std;
bool check(vector<int> values, int n, int len) { // not a reference
// cout << "Checking " << len << "\n";
for(int i=0; i<n-len+1; i++) {
// for(auto a : values)
// cout << a << " ";
// cout << "\n";
if(values[i] == 0)
continue;
else if(values[i] > 0)
values[i+len] += values[i];
else
return false;
}
// for(auto a : values)
// cout << a << " ";
// cout << "\n";
for(int i=n-len+1; i<=n; i++)
if(values[i] != 0)
return false;
return true;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin >> n;
vector<int> values(n+1, 0);
long long sum = 0;
for(int i=0; i<n; i++) {
cin >> values[i];
sum += values[i];
}
//undo prefix
for(int i=n-1; i>=0; i--)
values[i+1] -= values[i];
for(int len=n; len>=1; len--) {
if(sum%len != 0)
continue;
if(check(values, n, len)) {
cout << len << "\n";
break;
}
}
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 | #include <bits/stdc++.h> using namespace std; bool check(vector<int> values, int n, int len) { // not a reference // cout << "Checking " << len << "\n"; for(int i=0; i<n-len+1; i++) { // for(auto a : values) // cout << a << " "; // cout << "\n"; if(values[i] == 0) continue; else if(values[i] > 0) values[i+len] += values[i]; else return false; } // for(auto a : values) // cout << a << " "; // cout << "\n"; for(int i=n-len+1; i<=n; i++) if(values[i] != 0) return false; return true; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; vector<int> values(n+1, 0); long long sum = 0; for(int i=0; i<n; i++) { cin >> values[i]; sum += values[i]; } //undo prefix for(int i=n-1; i>=0; i--) values[i+1] -= values[i]; for(int len=n; len>=1; len--) { if(sum%len != 0) continue; if(check(values, n, len)) { cout << len << "\n"; break; } } return 0; } |
English