fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. int const maxn = 1e5+11;
  6. int n,m;
  7. set<pair<ll,int> > s;
  8. set<pair<ll,int> > k;
  9. ll ans[maxn] = {0};
  10. ll a[maxn],t[maxn];
  11. ll timee;
  12.  
  13. int main()
  14. {
  15. //freopen("ELVSIMUL.inp", "r", stdin);
  16. //freopen("ELVSIMUL.out", "w", stdout);
  17. cin >> n >> m;
  18. for(int i=1;i<=n;i++)
  19. {
  20. cin >> t[i] >> a[i];
  21. s.insert({t[i] + a[i] - 1,i});
  22. }
  23. for(int i=1;i<=n;i++)
  24. if(ans[i] == 0)
  25. {
  26. timee = max(timee,t[i]) + 2* (a[i] - 1);
  27. while((*s.begin()).first <= timee && !s.empty())
  28. {
  29. int j = (*s.begin()).second;
  30. k.insert({a[j],j});
  31. s.erase(s.begin());
  32. }
  33. while ((*k.begin()).first <= a[i] && !k.empty())
  34. {
  35. int j = (*k.begin()).second;
  36. ans[j] = timee;
  37. k.erase(k.begin());
  38. }
  39. }
  40.  
  41. for(int i=1;i<=n;i++)
  42. cout << ans[i] << endl;
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 4468KB
stdin
5 4
2 3
2 4
5 2
5 3
9 3
stdout
6
12
6
12
12