贝茜放慢脚步
题目链接:https://www.acwing.com/problem/content/1936/
题解
按照顺序,时间和距离哪个在前先算哪个,依次往后算即可。
代码
#include
#include
#include
#include
#include
#include
#define pb push_back
using namespace std;
vector a,b;
int main()
{
int n;
cin >> n;
int u;
char ch;
while(n -- ) {
cin >> ch >> u;
if(ch == 'T') a.pb(u);
else b.pb(u);
}
b.pb(1000);
sort(a.begin(),a.end());
sort(b.begin(),b.end());
double t=0,s=0,v=1;
int i = 0,j = 0;
while(i < a.size() || j < b.size()) {
if(j == b.size() || i < a.size() && a[i] - t < (b[j] - s) * v) {
s += (a[i]-t) / v;
t = a[i];
v ++ ;
i ++ ;
}
else {
t += (b[j] - s) * v;
s = b[j];
v ++ ;
j ++ ;
}
}
cout << fixed << setprecision(0) << t << endl;
return 0;
}