Advertisement
Guest User

Untitled

a guest
Jul 27th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.88 KB | None | 0 0
  1. #include "bits/stdc++.h"                                                        
  2.                                                                                
  3. using namespace std;                                                            
  4.                                                                                                                                                              
  5. bool sprawdz(int pref[], int n, int dz){                                        
  6.     for (int i = 0; i < n; i += dz){                                            
  7.         if (pref[i+dz-1] - pref[i] < 1) return false;                          
  8.     }                                                                          
  9.     return true;                                                                
  10. }                                                                              
  11. int main()                                                                      
  12. {                                                                              
  13.     ios_base::sync_with_stdio(0);                                              
  14.     int n, wynik, dz;                                                          
  15.     cin >> n;                                                                  
  16.     int * gory = new int[n];                                                    
  17.     int * pref = new int[n];                                                    
  18.     for (int i = 0; i < n; i++) cin >> gory[i];                                
  19.     for (int i = 1; i < n - 1; i++){                                            
  20.         if (gory[i-1] < gory[i] && gory[i+1] < gory[i]) pref[i] = pref[i-1] + 1;
  21.                                                                                
  22.         else pref[i] = pref[i-1];                                              
  23.     }                                                                          
  24.     pref[n-1] = pref[n-2];                                                      
  25.     dz  = 1;                                                                    
  26.     wynik = 0;                                                                  
  27.     while ( dz * dz <= n){                                                      
  28.         if (n % dz == 0){                                                      
  29.             if (sprawdz(pref, n, dz)) wynik = max(wynik, n / dz);              
  30.             if (sprawdz(pref, n, n / dz)) wynik = max(wynik, dz);              
  31.         }                                                                      
  32.         dz++;                                                                  
  33.     }                                                                          
  34.     cout << wynik;                                                              
  35. }                                                                              
  36.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement