Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef long double ld;
  5.  
  6. const ld EPS = 0.0000001;
  7. int n;
  8. vector<ld> t, d;
  9.  
  10. main() {
  11. #ifdef ONPC
  12. freopen("a.in", "r", stdin);
  13. #endif
  14. ios_base::sync_with_stdio(0), cin.tie(0);
  15. cin >> n;
  16. for (int i = 1; i <= n; ++i) {
  17. char c;
  18. ld x;
  19. cin >> c >> x;
  20. if (c == 'T') t.push_back(x);
  21. else if (x < 1000) d.push_back(x);
  22. }
  23. sort(t.begin(), t.end());
  24. sort(d.begin(), d.end());
  25. reverse(t.begin(), t.end());
  26. reverse(d.begin(), d.end());
  27. ld ans = 0;
  28. ld speed = 1;
  29. ld cur = 0;
  30. while(cur < 1000) {
  31. ld tt = 1e18 + 7, tu = 1e18 + 7;
  32. if (t.size() != 0) tt = t.back() - ans;
  33. if (d.size() != 0) tu = (d.back() - cur) / ((ld)1 / speed);
  34. if ((t.size() == 0 && d.size() == 0) || (d.size() == 0 && ((ld)1000 - cur) / ((ld)1 / speed) < tt)) {
  35. ans += ((ld)1000 - cur) / ((ld)1 / speed);
  36. //cout << '3';
  37. break;
  38. }
  39. if (tu < tt) {
  40. ans += (d.back() - cur) / ((ld)1 / speed);
  41. ++speed;
  42. cur = d.back();
  43. d.pop_back();
  44. //cout << '1' << ' ' << cur << ' ' << ans << '\n';
  45. } else {
  46. ans = t.back();
  47. cur += ((ld)1 / speed) * tt;
  48. ++speed;
  49. t.pop_back();
  50. //cout << '2' << ' ' << cur << ' ' << ans << '\n';
  51. }
  52. }
  53. //cout << '\n';
  54. //cout << fixed << setprecision(9) << ans << '\n';
  55. cout << (ll)(ans + 0.5) << '\n';
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement