Advertisement
mhdew

LOJ1082

May 26th, 2019
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.28 KB | None | 0 0
  1. /*Basic info
  2. Problem :
  3. Date :
  4. Author : Shesher
  5. */
  6.  
  7. #include<bits/stdc++.h>
  8.  
  9. using namespace std;
  10.  
  11. ///Template
  12. // #define in1()    freopen("C:\\Users\\SHESHER\\Rest\\Desktop\\MY COMPUTER\\Code\\Template\\New\\input.txt", "r", stdin);
  13. // #define out1()   freopen("C:\\Users\\SHESHER\\Rest\\Desktop\\MY COMPUTER\\Code\\Template\\New\\output 1.txt", "w", stdout);
  14.  
  15.  
  16. //Data types
  17. #define lo      long
  18. #define ll      long long
  19. #define llu     unsigned long long
  20.  
  21. //loop
  22. #define f1(i,x,y)   for(int i=x;i<=y;i++)
  23.  
  24. //Constants
  25. #define MAX     100007
  26. #define MOD     1000000007
  27. #define PI      acos(-1.0)
  28.  
  29. //STL
  30. #define vout(v)    for(int i=0;i<v.size();i++){cout<<v[i]; if(i==v.size()-1) cout<<endl; else cout<<" ";}
  31.  
  32. //Scan
  33. #define sc(x)    scanf("%d", &x)
  34. #define scl(x)   scanf("%lld", &x)
  35.  
  36. //Print
  37. #define pa(a,i,n)  for(int i=0;i<n;i++){ cout<<a[i]; if(i==n-1) cout<<endl; else cout<<" ";}
  38.  
  39. #define mset(flag)  memset(flag,0,sizeof(flag))
  40.  
  41. int a[MAX];
  42. int tree[MAX*4];
  43.  
  44. int tBld(int node, int b, int e)
  45. {
  46.     if(b==e){ tree[node]=a[b]; return tree[node]; }
  47.  
  48.     int left=node*2;
  49.     int right=node*2+1;
  50.     int mid=(b+e)/2;
  51.     int aa=tBld(left,b,mid);
  52.     int bb=tBld(right,mid+1,e);
  53.  
  54.     tree[node]=min(aa,bb);
  55. }
  56.  
  57. int mn;
  58. void query(int node, int b, int e, int i, int j)
  59. {
  60.     if(i>e || j<b){
  61. //        cout<<b<<" "<<e<<endl;
  62.         return;
  63.     }
  64.     if(b>=i && e<=j){
  65.             mn=min(mn,tree[node]);
  66. //            cout<<b<<" "<<tree[node]<<endl;
  67.             return;
  68.     }
  69.  
  70.     int left=node*2;
  71.     int right=node*2+1;
  72.     int mid=(b+e)/2;
  73.  
  74.     query(left,b,mid,i,j);
  75.     query(right,mid+1,e,i,j);
  76. }
  77.  
  78. int main()
  79. {
  80. //    freopen("in.txt", "r", stdin);
  81. //    freopen("out.txt", "w", stdout);
  82. //    clock_t tStart = clock();
  83.     int t;
  84.     sc(t);
  85.     f1(ti,1,t){
  86.         int n, q;
  87.         sc(n);
  88.         sc(q);
  89.         for(int i=1;i<=n;i++) sc(a[i]);
  90.  
  91.         tBld(1,1,n);
  92.         printf("Case %d:\n", ti);
  93.         while(q--){
  94.             int i, j;
  95.             sc(i);
  96.             sc(j);
  97.             mn=11111111;
  98.             query(1,1,n,i,j);
  99.             printf("%d\n", mn);
  100.         }
  101.     }
  102.  
  103. //    printf("\n>>Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
  104.  
  105.  
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement