54分求助
  • 板块灌水区
  • 楼主zyc_123
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/5 10:59
  • 上次更新2024/10/5 13:50:13
查看原帖
54分求助
1399044
zyc_123楼主2024/10/5 10:59

p9050sumy

#include<bits/stdc++.h>
using namespace std;
int n;
bool vis[1000005];
struct node
{
	int a;
	int ii;
}e[1000005];
bool cmp(const node &x,const node &y)
{
	if(x.a<y.a)
		return true;
	return false;
}
bool check(int j)
{
	int ans=0;
	for(int i=0;i<j;i++)
	{
		if(e[i].a!=e[j].a)
			ans+=e[i].a;
	}
	ans+=e[j].a;
	for(int i=j+1;i<n;i++)
	{
		if(ans>e[i].a)
			ans+=e[i].a;
		else 
			return false;
	}
	return true;
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>e[i].a;
		e[i].ii=i;
	}
	sort(e,e+n,cmp);
	int l=0,r=n-1,res=n+1;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(check(mid))
		{
			res=mid;
			r=mid-1;
		}
		else
		{
	//		res=mid;
			l=mid+1;
		}
	}
//	cout<<res;
//	cout<<check(3);
	for(int i=0;i<res;i++)
	{
		vis[e[i].ii]=1;
	}
	for(int i=0;i<n;i++)
	{
		if(vis[i]==1)
			cout<<'N';
		else
			cout<<'T';
	}
	return 0;
}

求助大佬 谢谢qaq

2024/10/5 10:59
加载中...