Advertisement
Guest User

pp

a guest
Feb 17th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. typedef pair<int, int> pii;
  7. typedef pair<long long, long long> pll;
  8. typedef long long ll;
  9. typedef short int shit;
  10.  
  11. #define ff first
  12. #define ss second
  13. #define pb push_back
  14.  
  15. struct gg{
  16.     shit l, r, ind;
  17. };
  18.  
  19. bool cmp(gg a, gg b){
  20.     if(a.l == b.l)
  21.         return a.r < b.r;
  22.     return a.l < b.l;
  23. }
  24.  
  25. vector<gg> q;
  26. int d[5000];
  27. shit ans[100000];
  28.  
  29. int main(){
  30.     //freopen("rmq.in", "r", stdin);
  31.     //freopen("rmq.out", "w", stdout);
  32.  
  33.     int m;
  34.     shit n, x;
  35.     cin >> n >> m;
  36.  
  37.     q.resize(m);
  38.  
  39.     for(shit i = 0; i < n; i++){
  40.         cin >> d[i];
  41.     }
  42.  
  43.     for(int i = 0; i < m; i++){
  44.         cin >> q[i].l >> q[i].r;
  45.         q[i].l --; q[i].r --;
  46.         q[i].ind = i;
  47.         x = max(x, q[i].r);
  48.     }
  49.     sort(q.begin(), q.end(), cmp);
  50.  
  51.     int ptr = 0; bool isStop = 0;
  52.     shit tr;
  53.  
  54.     for(shit l = 0; l <= x; l++){
  55.         int curMin = INT_MAX;
  56.         for(shit r = l; r <= x; r ++){
  57.             if(curMin > d[r]){
  58.                 curMin = d[r];
  59.                 tr = r;
  60.             }
  61.  
  62.             for(int i = ptr; i <= x && q[i].l == l && q[i].r == r; i++){
  63.                 ans[q[i].ind] = tr;
  64.                 ptr++;
  65.             }
  66.  
  67.             if(ptr >= q.size()){
  68.                 isStop = true;
  69.                 break;
  70.             }
  71.         }
  72.         if(isStop)
  73.             break;
  74.     }
  75.  
  76.     for(int i = 0; i < m; i++){
  77.         cout << ans[i]+1 << endl;
  78.     }
  79.  
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement