Advertisement
Saleh127

UVA 10020

Jan 26th, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int t; cin>>t; for(int cs=1;cs<=t;cs++)
  5. bool cmp(pair<ll,ll>a,pair<ll,ll>b)
  6. {
  7. return a.second>b.second;
  8. }
  9. int main()
  10. {
  11. ios_base::sync_with_stdio(0);
  12. cin.tie(0);
  13. cout.tie(0);
  14.  
  15. test
  16. {
  17. vector<pair<ll,ll>>x,ans;
  18. ll l,r,i,j=0,k=0,m;
  19. cin>>m;
  20. while(cin>>l>>r && (l||r))
  21. {
  22. x.push_back({l,r});
  23. }
  24. sort(x.begin(),x.end(),cmp);
  25. while(j<m)
  26. {
  27. k=0;
  28. for(i=0; i<x.size(); i++)
  29. {
  30. if(x[i].first<=j && x[i].second>j)
  31. {
  32. ans.push_back(x[i]);
  33.  
  34. j=x[i].second;
  35. x.erase(x.begin()+i);
  36. i--;
  37. k=1;
  38. }
  39. }
  40. if(k==0) break;
  41. }
  42. cout<<endl;
  43. if(j>=m)
  44. {
  45. cout<<ans.size()<<endl;
  46. for(i=0; i<ans.size(); i++)
  47. {
  48. cout<<ans[i].first<<" "<<ans[i].second<<endl;
  49. }
  50. }
  51. else cout<<0<<endl;
  52. }
  53. return 0;
  54. }
  55.  
  56. /*
  57.  
  58. #include <iostream>
  59. #include<algorithm>
  60. using namespace std;
  61. int vis[100010];
  62.  
  63. struct node
  64. {
  65. int start, end, cover;
  66. } seg[100010], outn[100010];
  67.  
  68. int cmp(node a, node b)
  69. {
  70. return a.end > b.end;
  71. }
  72.  
  73. int main()
  74. {
  75. int ca;
  76. cin >> ca;
  77. while (ca--)
  78. {
  79. int b;
  80. cin >> b;
  81. int n=0;
  82. while (1)
  83. {
  84. cin >> seg[n].start >> seg[n].end;
  85. if (seg[n].start == 0 && seg[n].end == 0)
  86. break;
  87. n++;
  88. }
  89. sort(seg, seg + n, cmp);
  90. int start = 0, end = b, out = 0, i;
  91. while (start < end)
  92. {
  93. for (i = 0; i < n; i++)
  94. if (seg[i].start <= start && seg[i].end > start)
  95. {
  96. start = seg[i].end;
  97. outn[out++] = seg[i];
  98. break;
  99. }
  100. if (i == n)
  101. break;
  102. }
  103. if (i == n)
  104. cout << "0" << endl;
  105. else
  106. {
  107. cout << out << endl;
  108. for (int i = 0; i < out; i++)
  109. cout << outn[i].start << " " << outn[i].end << endl;
  110. }
  111. if (ca)
  112. cout << endl;
  113. }
  114. return 0;
  115.  
  116. }
  117. */
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement