Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- // #define int long long
- #define inf 2e18
- int MOD=1000000007;//998244353;
- const int nn=1000050;
- bool prime[nn]; //array to store precalculated primes till 10^6
- void cal_primes(){memset(prime,true,sizeof(prime)); for(int i=2;i<=sqrt(nn);++i){ if(prime[i]==true){ for(int j=i*i;j<=nn;j+=i){prime[j]=false;}}}}
- int m[200005][19];
- int logg[200005];
- int min_in_range(int l,int r)
- {
- int length=(r-l+1),k;
- k=logg[length];
- return min(m[l][k],m[r-(1<<k)+1][k]);
- }
- void solve(int t)
- {
- int testcases=t;
- logg[1]=0;
- for(int i=2;i<200005;i++){
- logg[i]=logg[i/2]+1;
- }
- while(t--)
- {
- //cout<<"Case #"<<(testcases-t)<<": "<<endl;
- int n,q;cin>>n>>q;
- vector<int> v(n);
- for(int i=0;i<n;i++){
- cin>>v[i];
- m[i][0]=v[i];
- }
- for(int j=1;j<19;j++){
- for(int i=0;(i+(1<<j)-1)<n;i++){
- m[i][j]=min(m[i][j-1],m[i+(1<<(j-1))][j-1]);
- }
- }
- // for(int i=0;i<n;i++){
- // for(int j=0;j<17;j++)
- // cerr<<m[i][j]<<" ";
- // cerr<<endl;
- // }
- int l,r;
- for(int i=0;i<q;i++){
- cin>>l>>r;
- // cerr<<min_in_range(l-1,r-1)<<endl;
- cout<<min_in_range(l-1,r-1)<<endl;
- }
- }
- }
- main()
- {
- auto start=chrono::system_clock::now();
- {
- #ifndef ONLINE_JUDGE
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- freopen("error.txt","w",stderr);
- #endif
- ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
- int t=1;
- // cin>>t;
- solve(t);
- }
- auto end=chrono::system_clock::now();
- chrono::duration<double> elapsed=end-start;
- // cout<<endl<<"Time taken: "<<elapsed.count()<<" sec";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement