Advertisement
apl-mhd

(LightOj) 1112

Apr 15th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstdlib>
  5. #include <string.h>
  6. using namespace std;
  7.  
  8. #define MAX 100010
  9. #define SET(a) memset(a,1,sizeof(a))
  10.  
  11. void tree(int input[],int segTree[], int low, int high, int pos){
  12.    
  13.         if(low == high){
  14.             segTree[pos] = input[low];
  15.             return;
  16.         }
  17.        
  18.         int mid = (low+high) /2;
  19.        
  20.         tree(input, segTree, low, mid, 2*pos+1);
  21.         tree(input, segTree, mid+1, high, 2*pos+2);
  22.        
  23.         segTree[pos] = min(segTree[2*pos+1], segTree[2*pos+2]);
  24.    
  25.     }
  26.    
  27. int query(int segTree[], int qlow, int qhigh, int low, int high, int pos){
  28.        
  29.         if(qlow<= low && qhigh>=high)
  30.            
  31.             return segTree[pos];
  32.            
  33.         if(qlow > high || qhigh<low)
  34.             return 99999;
  35.        
  36.         int mid  = (low+high) /2;
  37.        
  38.        
  39.     int p1 = query(segTree, qlow, qhigh, low, mid, 2*pos+1);
  40.     int p2 = query(segTree, qlow, qhigh, mid+1, high, 2*pos+2);
  41.    
  42.     return min(p1, p2);    
  43.        
  44. }      
  45.  
  46. int main(int argc, char **argv)
  47. {
  48.     int t,count=1;
  49.     scanf("%d",&t);
  50.    
  51.     while(t--){
  52.        
  53.     int number[MAX];
  54.    
  55.     int i,n, q, segTree[MAX*3]= {0};
  56.    
  57.     scanf("%d%d",&n,&q);
  58.     for(i= 0; i<n; i++){
  59.        
  60.         scanf("%d",&number[i]);
  61.    
  62.        
  63.         }
  64.    
  65.     tree(number, segTree, 0, n-1, 0);
  66.     printf("Case %d:\n",count);
  67.     for(i=0; i<q; i++){
  68.         int x, y;
  69.         scanf("%d%d",&x,&y);
  70.        
  71.         printf("%d\n",query(segTree,x-1,y-1,0, n-1,0));
  72.  
  73.    
  74. }      
  75.    
  76.     count++;
  77.         }
  78.        
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement