Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- const ld EPS = 0.0000001;
- int n;
- vector<ld> t, d;
- main() {
- #ifdef ONPC
- freopen("a.in", "r", stdin);
- #endif
- ios_base::sync_with_stdio(0), cin.tie(0);
- cin >> n;
- for (int i = 1; i <= n; ++i) {
- char c;
- ld x;
- cin >> c >> x;
- if (c == 'T') t.push_back(x);
- else if (x < 1000) d.push_back(x);
- }
- sort(t.begin(), t.end());
- sort(d.begin(), d.end());
- reverse(t.begin(), t.end());
- reverse(d.begin(), d.end());
- ld ans = 0;
- ld speed = 1;
- ld cur = 0;
- while(cur < 1000) {
- ld tt = 1e18 + 7, tu = 1e18 + 7;
- if (t.size() != 0) tt = t.back() - ans;
- if (d.size() != 0) tu = (d.back() - cur) / ((ld)1 / speed);
- if ((t.size() == 0 && d.size() == 0) || (d.size() == 0 && ((ld)1000 - cur) / ((ld)1 / speed) < tt)) {
- ans += ((ld)1000 - cur) / ((ld)1 / speed);
- //cout << '3';
- break;
- }
- if (tu < tt) {
- ans += (d.back() - cur) / ((ld)1 / speed);
- ++speed;
- cur = d.back();
- d.pop_back();
- //cout << '1' << ' ' << cur << ' ' << ans << '\n';
- } else {
- ans = t.back();
- cur += ((ld)1 / speed) * tt;
- ++speed;
- t.pop_back();
- //cout << '2' << ' ' << cur << ' ' << ans << '\n';
- }
- }
- //cout << '\n';
- //cout << fixed << setprecision(9) << ans << '\n';
- cout << (ll)(ans + 0.5) << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement