求助
查看原帖
求助
649304
封禁用户楼主2023/2/23 19:40

65分提交记录

实在想不到是哪里错了,求助。

#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;
}
2023/2/23 19:40
加载中...