G2A Many GEOs
SHARE
TWEET

Untitled

a guest Mar 29th, 2020 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. int n,t1,t2,maxx1=-1,maxx2=-1;
  7. long long int a,b,k;
  8.  
  9. struct Fortune
  10. {
  11.     int right;
  12.     int left;  
  13. };
  14.  
  15. Fortune arr[105];
  16.  
  17. void input( int &n, Fortune *x, long long int &a, long long int &b, long long int &k )
  18. {
  19.     cin >> n;
  20.    
  21.     for ( int i = 0; i < n; i++ )
  22.     {
  23.         cin >> x[i].right;
  24.     }
  25.    
  26.     cin >> a >> b >> k;
  27. }
  28.  
  29. void cmp( int &n, Fortune *x )
  30. {
  31.     x[0].left = x[0].right;
  32.     for ( int i = 1; i < n; i++ )
  33.     {
  34.         x[n-i].left = x[i].right;
  35.     }
  36. }
  37.  
  38. void put1( int &n, Fortune *x, long long int &a, long long int &b, long long int &k, int &t1, int &t2, int &maxx1 ) // максимум при повороте вправо
  39. {
  40.     t1 = ((a+k-1)/k)-1; //номер сектора при а
  41.     t2 = ((b+k-1)/k)-1; //номер сектора при б
  42.    
  43.     if ( t2-t1 >= n )
  44.     {
  45.         for ( int i = 0; i < n; i++ )
  46.         {
  47.             if ( x[i].right > maxx1 ) maxx1 = x[i].right;
  48.         }
  49.     }
  50.     else
  51.     {
  52.         for ( int i = min(t1%n,t2%n); i <= max(t1%n,t2%n); i++ )
  53.         {
  54.             if ( x[i].right > maxx1 ) maxx1 = x[i].right;
  55.         }
  56.     }
  57. }
  58.  
  59. void put2( int &n, Fortune *x, long long int &a, long long int &b, long long int &k, int &t1, int &t2, int &maxx2 ) //максимум при повороте влево
  60. {
  61.     if ( t2-t1 >=n )
  62.     {
  63.         for ( int i = 0; i < n; i++ )
  64.         {
  65.             if ( x[i].left > maxx2 ) maxx2 = x[i].left;
  66.         }
  67.     }
  68.     else
  69.     {
  70.         for ( int i = min(t1%n,t2%n); i <= max(t1%n,t2%n); i++)
  71.         {
  72.             if ( x[i].left > maxx2 ) maxx2 = x[i].left;
  73.         }
  74.     }
  75. }
  76.  
  77. void output( int &maxx1, int &maxx2 )
  78. {
  79.     if ( maxx1 > maxx2 ) cout << maxx1; // при повороте вправо
  80.     else cout << maxx2; // при повороте влево
  81. }
  82.  
  83. int main()
  84. {
  85.     input(n,arr,a,b,k);
  86.     cmp(n,arr);
  87.     put1(n,arr,a,b,k,t1,t2,maxx1);
  88.     put2(n,arr,a,b,k,t1,t2,maxx2);
  89.     output(maxx1,maxx2);
  90.    
  91.     return 0;
  92. }
RAW Paste Data
Ledger Nano X - The secure hardware wallet
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top