Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Basic info
- Problem :
- Date :
- Author : Shesher
- */
- #include<bits/stdc++.h>
- using namespace std;
- ///Template
- // #define in1() freopen("C:\\Users\\SHESHER\\Rest\\Desktop\\MY COMPUTER\\Code\\Template\\New\\input.txt", "r", stdin);
- // #define out1() freopen("C:\\Users\\SHESHER\\Rest\\Desktop\\MY COMPUTER\\Code\\Template\\New\\output 1.txt", "w", stdout);
- //Data types
- #define lo long
- #define ll long long
- #define llu unsigned long long
- //loop
- #define f1(i,x,y) for(int i=x;i<=y;i++)
- //Constants
- #define MAX 100007
- #define MOD 1000000007
- #define PI acos(-1.0)
- //STL
- #define vout(v) for(int i=0;i<v.size();i++){cout<<v[i]; if(i==v.size()-1) cout<<endl; else cout<<" ";}
- //Scan
- #define sc(x) scanf("%d", &x)
- #define scl(x) scanf("%lld", &x)
- //Print
- #define pa(a,i,n) for(int i=0;i<n;i++){ cout<<a[i]; if(i==n-1) cout<<endl; else cout<<" ";}
- #define mset(flag) memset(flag,0,sizeof(flag))
- int a[MAX];
- int tree[MAX*4];
- int tBld(int node, int b, int e)
- {
- if(b==e){ tree[node]=a[b]; return tree[node]; }
- int left=node*2;
- int right=node*2+1;
- int mid=(b+e)/2;
- int aa=tBld(left,b,mid);
- int bb=tBld(right,mid+1,e);
- tree[node]=min(aa,bb);
- }
- int mn;
- void query(int node, int b, int e, int i, int j)
- {
- if(i>e || j<b){
- // cout<<b<<" "<<e<<endl;
- return;
- }
- if(b>=i && e<=j){
- mn=min(mn,tree[node]);
- // cout<<b<<" "<<tree[node]<<endl;
- return;
- }
- int left=node*2;
- int right=node*2+1;
- int mid=(b+e)/2;
- query(left,b,mid,i,j);
- query(right,mid+1,e,i,j);
- }
- int main()
- {
- // freopen("in.txt", "r", stdin);
- // freopen("out.txt", "w", stdout);
- // clock_t tStart = clock();
- int t;
- sc(t);
- f1(ti,1,t){
- int n, q;
- sc(n);
- sc(q);
- for(int i=1;i<=n;i++) sc(a[i]);
- tBld(1,1,n);
- printf("Case %d:\n", ti);
- while(q--){
- int i, j;
- sc(i);
- sc(j);
- mn=11111111;
- query(1,1,n,i,j);
- printf("%d\n", mn);
- }
- }
- // printf("\n>>Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement