#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <deque>
#include <map>
#include <queue>
#include <climits>
using namespace std;
using ll=long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int N;
cin >> N;
vector<int> V(N);
ll suma=0;
for(int i=0; i<N; i++){
cin >> V[i];
suma += V[i];
}
vector<int> dzielniki;
for(int i=N; i>=1; i--) if(suma%i==0) dzielniki.push_back(i);
vector<int> plaza(N);
vector<int> zmiana(N);
for(int dzielnik : dzielniki){
fill(zmiana.begin(), zmiana.end(), 0);
//cout<<"- " << dzielnik<<'\n';
plaza[0]=V[0];
zmiana[0]=V[0];
for(int i=1; i<N; i++){
plaza[i]=plaza[i-1];
if(i>=dzielnik){
plaza[i]-=zmiana[i-dzielnik];
}
if(plaza[i]<V[i]){
if(i>N-dzielnik){
//cout<<'a'<<'\n';
break;
}
else{
zmiana[i]=V[i]-plaza[i];
plaza[i]=V[i];
//cout<<'e'<<'\n';
}
}
else if(plaza[i]>V[i]){
//cout<<'b'<<'\n';
break;
}
else if(plaza[i]==V[i] && i==N-1){
//cout<<'c'<<'\n';
cout<<dzielnik<<'\n';
return 0;
}
else{
//cout<<"d "<< plaza[i] << ' ' << V[i] <<'\n';
zmiana[i]=0;
}
}
}
cout<<1<<"\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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <iostream> #include <vector> #include <string> #include <algorithm> #include <numeric> #include <cmath> #include <deque> #include <map> #include <queue> #include <climits> using namespace std; using ll=long long; int main(){ ios::sync_with_stdio(false); cin.tie(0); int N; cin >> N; vector<int> V(N); ll suma=0; for(int i=0; i<N; i++){ cin >> V[i]; suma += V[i]; } vector<int> dzielniki; for(int i=N; i>=1; i--) if(suma%i==0) dzielniki.push_back(i); vector<int> plaza(N); vector<int> zmiana(N); for(int dzielnik : dzielniki){ fill(zmiana.begin(), zmiana.end(), 0); //cout<<"- " << dzielnik<<'\n'; plaza[0]=V[0]; zmiana[0]=V[0]; for(int i=1; i<N; i++){ plaza[i]=plaza[i-1]; if(i>=dzielnik){ plaza[i]-=zmiana[i-dzielnik]; } if(plaza[i]<V[i]){ if(i>N-dzielnik){ //cout<<'a'<<'\n'; break; } else{ zmiana[i]=V[i]-plaza[i]; plaza[i]=V[i]; //cout<<'e'<<'\n'; } } else if(plaza[i]>V[i]){ //cout<<'b'<<'\n'; break; } else if(plaza[i]==V[i] && i==N-1){ //cout<<'c'<<'\n'; cout<<dzielnik<<'\n'; return 0; } else{ //cout<<"d "<< plaza[i] << ' ' << V[i] <<'\n'; zmiana[i]=0; } } } cout<<1<<"\n"; return 0; } |
English