Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- int n,t1,t2,maxx1=-1,maxx2=-1;
- long long int a,b,k;
- struct Fortune
- {
- int right;
- int left;
- };
- Fortune arr[105];
- void input( int &n, Fortune *x, long long int &a, long long int &b, long long int &k )
- {
- cin >> n;
- for ( int i = 0; i < n; i++ )
- {
- cin >> x[i].right;
- }
- cin >> a >> b >> k;
- }
- void cmp( int &n, Fortune *x )
- {
- x[0].left = x[0].right;
- for ( int i = 1; i < n; i++ )
- {
- x[n-i].left = x[i].right;
- }
- }
- void put1( int &n, Fortune *x, long long int &a, long long int &b, long long int &k, int &t1, int &t2, int &maxx1 ) // максимум при повороте вправо
- {
- t1 = ((a+k-1)/k)-1; //номер сектора при а
- t2 = ((b+k-1)/k)-1; //номер сектора при б
- if ( t2-t1 >= n )
- {
- for ( int i = 0; i < n; i++ )
- {
- if ( x[i].right > maxx1 ) maxx1 = x[i].right;
- }
- }
- else
- {
- for ( int i = min(t1%n,t2%n); i <= max(t1%n,t2%n); i++ )
- {
- if ( x[i].right > maxx1 ) maxx1 = x[i].right;
- }
- }
- }
- void put2( int &n, Fortune *x, long long int &a, long long int &b, long long int &k, int &t1, int &t2, int &maxx2 ) //максимум при повороте влево
- {
- if ( t2-t1 >=n )
- {
- for ( int i = 0; i < n; i++ )
- {
- if ( x[i].left > maxx2 ) maxx2 = x[i].left;
- }
- }
- else
- {
- for ( int i = min(t1%n,t2%n); i <= max(t1%n,t2%n); i++)
- {
- if ( x[i].left > maxx2 ) maxx2 = x[i].left;
- }
- }
- }
- void output( int &maxx1, int &maxx2 )
- {
- if ( maxx1 > maxx2 ) cout << maxx1; // при повороте вправо
- else cout << maxx2; // при повороте влево
- }
- int main()
- {
- input(n,arr,a,b,k);
- cmp(n,arr);
- put1(n,arr,a,b,k,t1,t2,maxx1);
- put2(n,arr,a,b,k,t1,t2,maxx2);
- output(maxx1,maxx2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement