Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement