Cách đa năng hoá toán tử < , và những lợi ích của nó trong set,map.

 Đề bài: https://codeforces.com/problemset/problem/608/A

Code:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. struct cap{
  5. ll tang,tg;
  6. };
  7. // bool tmp(cap a, cap b){
  8. // if(a.tang==b.tang) return a.tg<b.tg;
  9. // else return a.tang>b.tang;
  10. // }
  11. bool operator < (const cap& a, const cap& b){
  12. if(a.tang==b.tang) return a.tg<b.tg;
  13. return a.tang>b.tang;
  14. }
  15. int main(){
  16. // freopen("input.txt","r",stdin);
  17. // freopen("output.txt","w",stdout);
  18. ll n,s;
  19. set<cap> ss;
  20. cin>>n>>s;
  21. cap arr[n];
  22. ll i;
  23. for(i=0;i<n;i++){
  24. cin>>arr[i].tang>>arr[i].tg;
  25. ss.insert(arr[i]);
  26. }
  27. // for(auto pp: ss){
  28. // cout<<pp.tang<<" "<<pp.tg<<'\n';
  29. // }
  30. sort(arr,arr+n);
  31. // for(i=0;i<n;i++){
  32. // cout<<arr[i].tang<<" "<<arr[i].tg<<'\n';
  33. // }
  34. ll tructhoigian = 0;
  35. ll vt = s;
  36. for(i=0;i<n;i++){
  37. tructhoigian = tructhoigian + (vt-arr[i].tang);
  38. vt=arr[i].tang;
  39. if(arr[i].tg>tructhoigian) tructhoigian = arr[i].tg;
  40. }
  41. if(vt>0){
  42. tructhoigian+=vt;
  43. }
  44. cout<<tructhoigian;
  45. }

Nhận xét

Bài đăng phổ biến từ blog này

Sinh Test trong Python va code AC

Học về Segment Tree

Cách tính a*b mod m , a^b mod m , a^(-1) mod m với m không phải là số nguyên tố (inversion có nghĩa khi (a,m)=1)