Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Author: Ngbach2006
- */
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- #define gcd __gcd
- const int N=400,M=100005;
- void ordinary_min(){
- int i,j,n,dp[N][M],k,q,l,r,pawl;
- cin>>n;
- k=floor(log2(n));
- for(i=0;i<n;++i) cin>>dp[0][i];
- for(i=1;i<=k;++i){
- for(j=0;j<n;++j){
- pawl=j+(int)floor(pow(2,i-1));
- if(pawl>=n) break;
- dp[i][j]=min(dp[i-1][j],dp[i-1][pawl]);
- }
- }
- cin>>q;
- while(q--){
- cin>>l>>r;
- k=floor(log2(r-l+1));
- cout<<min(dp[k][l],dp[k][r-(int)floor(pow(2,k))+1])<<endl;
- }
- }
- void ordinary_max(){
- int i,j,n,dp[N][M],q,l,r,pawl,k;
- cin>>n;
- k=floor(log2(n));
- for(i=0;i<n;++i) cin>>dp[0][i];
- for(i=1;i<=k;++i){
- for(j=0;j<n;++j){
- pawl=j+floor(pow(2,i-1));
- if(pawl>=n) break;
- dp[i][j]=max(dp[i-1][j],dp[i-1][pawl]);
- }
- }
- cin>>q;
- while(q--){
- cin>>l>>r;
- k=floor(log2(r-l+1));
- cout<<max(dp[k][l],dp[k][r-(int)floor(pow(2,k))+1])<<endl;
- }
- }
- int main(){
- ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(NULL);
- return 0;
- }
- /*
- ==================================+
- INPUT: |
- ------------------------------ |
- 13
- 9 1 7 1 3 1 0 8 9 7 1 3 5
- 100
- 6 12
- ------------------------------ |
- ==================================+
- OUTPUT: |
- ------------------------------ |
- ------------------------------ |
- ==================================+
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement