Advertisement
Patrickmeme

Wind

Jan 15th, 2023
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream cin("wind.in");
  4. ofstream cout("wind.out");
  5. int v[100000],s[100000];
  6. int main()
  7. {
  8.     long long cer,n,i,d,cnt,cd,min1,max1,nr,min2,rd,maxo,maxdo;
  9.     cin>>cer>>n>>v[0];
  10.     s[0]=v[0];
  11.     for(i=1;i<n;i++){
  12.         cin>>v[i];
  13.         s[i]=v[i]+s[i-1];
  14.     }
  15.     if(cer==1){
  16.         d=2;
  17.         cnt=1;
  18.         while(d*d<n){
  19.             if(n%d==0)
  20.                 cnt+=2;
  21.             d++;
  22.         }
  23.         if(d*d==n)
  24.             cnt
  25.             ++;
  26.         cout<<cnt;
  27.     }else{
  28.         rd=0;
  29.         maxdo=1;
  30.         min2=99999999999999999;
  31.         d=1;
  32.         while(d*d<=n){
  33.             cd=d;
  34.             if(n%d==0){
  35.                 maxo=1;
  36.                 ///parte 1
  37.                 min1=s[d-1];
  38.                 max1=s[d-1];
  39.                 nr=2*d-1;
  40.                 while(nr<n){
  41.                     if(s[nr]-s[nr-d]>max1){
  42.                         max1=s[nr]-s[nr-d];
  43.                         maxo=nr-d+1;
  44.                     }
  45.                     if(s[nr]-s[nr-d]<min1)
  46.                         min1=s[nr]-s[nr-d];
  47.                     nr+=d;
  48.                 }
  49.                 if(max1-min1<min2){
  50.                     maxdo=maxo;
  51.                     rd=d;
  52.                     min2=max1-min1;
  53.                 }
  54.                 ///partea2
  55.                 if(d!=1){
  56.                     d=n/d;
  57.                     maxo=1;
  58.                     min1=s[d-1];
  59.                     max1=s[d-1];
  60.                     nr=2*d-1;
  61.                     while(nr<n){
  62.                         if(s[nr]-s[nr-d]>max1){
  63.                             maxo=nr-d+1;
  64.                             max1=s[nr]-s[nr-d];
  65.                         }
  66.                         if(s[nr]-s[nr-d]<min1)
  67.                             min1=s[nr]-s[nr-d];
  68.                         nr+=d;
  69.                     }
  70.                     if(max1-min1<min2){
  71.                         maxdo=maxo;
  72.                         rd=d;
  73.                         min2=max1-min1;
  74.                     }
  75.                 }
  76.             }
  77.             d=cd+1;
  78.         }
  79.         cout<<rd<<" "<<maxdo;
  80.     }
  81.     return 0;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement