hihocoder1411

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
ll sum[1005]={0};
int n;
ll a[1005],b[1005],vis[1005];
int dfs(int k)
{
	if(k>n)return 1;
	for(int i=1;i<=n;i++)
	{
		if(!vis[i]&&sum[k-1]+a[i]>=0)
		{
			b[k]=i;
			sum[k]=sum[k-1]+a[i];
			vis[i]=1;
			if(!dfs(k+1))
			{
				vis[i]=0;
				sum[k]-=a[i];
			}
			else return 1;
		}
	}
}
int main()
{
//	freopen("1.txt","r",stdin);
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	if(dfs(1))for(int i=1;i<=n;i++)cout<<b[i]<<' ';
	else cout<<"Impossible";
}



猜你喜欢

转载自blog.csdn.net/yslcl12345/article/details/52974407
今日推荐