Advertisement
Shiam7777777

Untitled

Mar 10th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  4. #define ll long long
  5. #define ld double
  6. #define llu long long unsigned
  7.  
  8. #define mx 100001
  9. vector < int > arr( mx );
  10. vector < int > tree( mx * 3 );
  11.  
  12. void init(int node, int b, int e)
  13. {
  14.     if (b == e) {
  15.         tree[node] = arr[b];
  16.         return;
  17.     }
  18.     int Left = node * 2;
  19.     int Right = node * 2 + 1;
  20.     int mid = (b + e) / 2;
  21.     init(Left, b, mid);
  22.     init(Right, mid + 1, e);
  23.     tree[node] = min( tree[Left] , tree[Right] );
  24. }
  25.  
  26. int query(int node, int b, int e, int i, int j)
  27. {
  28.     if (i > e || j < b)
  29.         return INT_MAX;
  30.     if (b >= i && e <= j)
  31.     {
  32.         return tree[node];
  33.     }
  34.  
  35.     int Left = node * 2;
  36.     int Right = node * 2 + 1;
  37.     int mid = (b + e) / 2;
  38.     int p1 = query(Left, b, mid, i, j);
  39.     int p2 = query(Right, mid + 1, e, i, j);
  40.     return min( p1 , p2 );
  41. }
  42.  
  43. int main()
  44. {
  45.     fast;
  46.     int t;
  47.     cin>>t;
  48.     for( int c = 1 ; c <= t ; c++ )
  49.     {
  50. //        memset( arr , 0 , sizeof( arr ) );
  51. //        memset( tree , 0 , sizeof( tree ) );
  52.         int n , q;
  53.         cin>>n>>q;
  54.         for( int i = 1 ; i <= n ; i++ )
  55.             cin>>arr[i];
  56.         init( 1 , 1 , n );
  57.         cout<<"Case "<<c<<":"<<endl;
  58.         while( q-- )
  59.         {
  60.             int i , j;
  61.             cin>>i>>j;
  62.             cout<<query( 1 , 1 , n , i , j )<<endl;
  63.         }
  64.     }
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement