调了1h多,从10pts变成了30pts(悲
只有样例,和6#7#过了
#include<bits/stdc++.h>
#define ll long long
#define rint register int
#define mmt(a,b) memset(a,b,sizeof(a))
#define test(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int inf=0x3f3f3f3f,maxn=1e5;
ll n,tcnt=1,scnt=1,cnt=1;
double tnow,snow;
ll t[maxn],s[maxn];
signed main()
{
rint i,j;
//// freopen("P2338_2.in","r",stdin);
cin>>n;
for(i=1;i<=n;i++)
{
char op;
cin>>op;
if(op=='T')cin>>t[++t[0]];
else cin>>s[++s[0]];
}
sort(s+1,s+s[0]+1);
sort(t+1,t+t[0]+1);
s[s[0]+1]=inf;
t[s[0]+1]=inf;
while(scnt<=s[0]||tcnt<=t[0])
{
double v=1.0/cnt;
double st=snow+(t[tcnt]*1.0-tnow)*v;
double ss=s[scnt];
if(st<ss)//v为 x m/s
{
// test('T');
// test(tcnt);
snow=st;
tnow=t[tcnt++];
}
else
{
// test('S');
// test(scnt);
tnow+=(ss-snow)/v;
snow=ss;
scnt++;
}
cnt++;
}
double v=1.0/cnt;
tnow+=(1000-snow)/v;
cout<<int(tnow+0.5);
return 0;
}