题意:
公主辨别宝物,如果当前宝物价值大于所有之前宝物价值总和就会说wow ,如果大于之前任何一个宝物价值就会说oh,
现在有a个oh b个wow 询问宝物出现价值顺序
思路:
为了使最大的尽可能的小,所以要先构造wow ,之后构造oh
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
typedef long long ll;
const int maxn = 105;
int n, a, b;
int ans[maxn];
int main()
{
scanf("%d%d%d", &n, &a, &b);
ans[1] = 1;
int res = 1, sum = 1;
for(int i = 2; i <= n; ++i)
{
if(b)
{
res = sum + 1;
if(res>50000)
break;
b--;
}
else if(a && i > 2)
{
res++;
if(res>50000)
break;
a--;
}
ans[i] = res;
sum += res;
}
if(a || b)
{
printf("-1\n");
return 0;
}
for(int i = 1; i < n; ++i)
printf("%d ", ans[i]);
printf("%d\n", ans[n]);
return 0;
}