Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream cin("wind.in");
- ofstream cout("wind.out");
- int v[100000],s[100000];
- int main()
- {
- long long cer,n,i,d,cnt,cd,min1,max1,nr,min2,rd,maxo,maxdo;
- cin>>cer>>n>>v[0];
- s[0]=v[0];
- for(i=1;i<n;i++){
- cin>>v[i];
- s[i]=v[i]+s[i-1];
- }
- if(cer==1){
- d=2;
- cnt=1;
- while(d*d<n){
- if(n%d==0)
- cnt+=2;
- d++;
- }
- if(d*d==n)
- cnt
- ++;
- cout<<cnt;
- }else{
- rd=0;
- maxdo=1;
- min2=99999999999999999;
- d=1;
- while(d*d<=n){
- cd=d;
- if(n%d==0){
- maxo=1;
- ///parte 1
- min1=s[d-1];
- max1=s[d-1];
- nr=2*d-1;
- while(nr<n){
- if(s[nr]-s[nr-d]>max1){
- max1=s[nr]-s[nr-d];
- maxo=nr-d+1;
- }
- if(s[nr]-s[nr-d]<min1)
- min1=s[nr]-s[nr-d];
- nr+=d;
- }
- if(max1-min1<min2){
- maxdo=maxo;
- rd=d;
- min2=max1-min1;
- }
- ///partea2
- if(d!=1){
- d=n/d;
- maxo=1;
- min1=s[d-1];
- max1=s[d-1];
- nr=2*d-1;
- while(nr<n){
- if(s[nr]-s[nr-d]>max1){
- maxo=nr-d+1;
- max1=s[nr]-s[nr-d];
- }
- if(s[nr]-s[nr-d]<min1)
- min1=s[nr]-s[nr-d];
- nr+=d;
- }
- if(max1-min1<min2){
- maxdo=maxo;
- rd=d;
- min2=max1-min1;
- }
- }
- }
- d=cd+1;
- }
- cout<<rd<<" "<<maxdo;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement