Advertisement
Emiliatan

b859

Mar 29th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. /* b859             */
  2. /* AC (0.2s, 520KB) */
  3. #include <cstdio>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. const int MAXN = 20001;
  10. struct br
  11. {
  12.     int H, W, id;
  13. }beaver[MAXN];
  14.  
  15. int T, N, M, nowH, nowW;
  16. vector<br> ans;
  17.  
  18. int main()
  19. {
  20.     scanf("%d", &T);
  21.     while(T-- && scanf("%d %d", &N, &M))
  22.     {
  23.         ans.clear();
  24.  
  25.         for(int i = 1; i <= N; beaver[i].id = i, i++)
  26.             scanf("%d %d", &beaver[i].H, &beaver[i].W);
  27.  
  28.         ans.emplace_back(beaver[M]);
  29.         nowH = beaver[M].H, nowW = beaver[M].W;
  30.         sort(beaver + 1, beaver + 1 + N, [&](const br &a, const br &b) -> bool {return (a.H < b.H) || (a.H == b.H && a.W < b.W);});
  31.  
  32.         for(int i = 1; i <= N; i++)
  33.         {
  34.             while(ans.size() && ans.back().H < beaver[i].H && ans.back().W < beaver[i].W)
  35.                 ans.pop_back();
  36.             if(nowH < beaver[i].H && nowW < beaver[i].W)
  37.                 ans.emplace_back(beaver[i]);
  38.         }
  39.  
  40.         sort(ans.begin(), ans.end(), [&](const br &a, const br &b) -> bool {return a.id < b.id;});
  41.  
  42.         printf("%d\n", ans.size());
  43.         for(auto it : ans)
  44.             printf("%d ", it.id);
  45.         puts("");
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement