Advertisement
tanasaradu

Untitled

Oct 20th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin("rmq.in");
  4. ofstream fout("rmq.out");
  5. const short PMAX=17;
  6. int RMQ[PMAX][1<<PMAX],a[1<<PMAX],put[1<<PMAX],n,query;
  7. int main()
  8. {
  9. fin>>n>>query;
  10. for(int i=1;i<=n;i++)
  11. fin>>a[i];
  12. put[1]=0;
  13. for(int i=2;i<=n;i++)
  14. put[i]=put[i/2]+1;
  15. for(int i=1;i<=n;i++)
  16. RMQ[0][i]=a[i];
  17. for(int i=1;(1<<i)<=n;i++)
  18. for(int j=(1<<i);j<=n;j++)
  19. {
  20. int k=(1<<(i-1));
  21. RMQ[i][j]=min(RMQ[i-1][j],RMQ[i-1][j-k]);
  22. }
  23. while(query--)
  24. {
  25. int x,y,lug,k;
  26. fin>>x>>y;
  27. lug=(y-x+1);
  28. k=put[lug];
  29. fout<<min(RMQ[k][x+(1<<k)-1],RMQ[k][y])<<"\n";
  30. }
  31. fin.close();
  32. fout.close();
  33. return 0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement