A:Rikka with Sequence IV
题意简述
有一个长度为 n 的数列
求想要知道满足条件的字典序最小的排列 P 。
思路
贪心。
从前往后扫,选出第一个前缀和大于0的。
这样扫n遍扫出所有的数。
复杂度
代码
#include<cstdio>
using namespace std;
int n,cnt;
long long sum;
int seq[1010],ans[1010];
bool vis[1010];
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&seq[i]);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
if (!vis[j]&&sum+seq[j]>=0)
{
sum+=seq[j];
ans[++cnt]=j;
vis[j]=1;
break;
}
if (cnt!=i)
{
printf("Impossible");
return 0;
}
}
for (int i=1;i<=n;i++)
printf("%d ",ans[i]);
return 0;
}
B:Rikka with Subsequence
题意简述
有一个长度为 n 的字符串