实在想不到是哪里错了,求助。
#include<bits/stdc++.h>
#define LL int
#define re register
using namespace std;
LL n,h[500009],s,cs;
string c=" ";
struct qwq{
LL s,i;
}a[500009];
inline bool asd(qwq a,qwq b)
{
return a.s<b.s;
}
inline LL read()
{
LL x,f=1;char c;
while((c=getchar())<'0'||c>'9')
f=(c=='-'?-1:1);x=c-'0';
while((c=getchar())>='0'&&c<='9')
x=x*10+c-'0';
return x*f;
}
int main()
{
n=read();
for(re int i=1;i<=n;++i)
a[i].s=read(),a[i].i=i,c+=" ";
sort(a+1,a+1+n,asd);
for(re int i=1;i<=n;++i)
h[i]=h[i-1]+a[i].s;
for(re int i=1;i<=n;++i)
{
if(a[i].s<=a[1].s)
{
c[a[i].i]='N';
continue;
}
cs=max(cs,i),s=h[cs];
for(re int j=cs+1;j<=n;++j)
{
if(s>a[j].s)
s+=a[j].s,++cs;
else
break;
}
if(s>a[n].s)
c[a[i].i]='T';
else
c[a[i].i]='N';
}
c.erase(0,1);
cout<<c;
return 0;
}