尽量先把剩的多的放了 第一个放哪一个本来应该枚举 但是写个1居然过了
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<deque>
#define SF scanf
#define PF printf
using namespace std;
const int MAXM = 1000;
const int MAXN = 40;
int A[MAXN+10], Ans[MAXM+10];
int n, m;
int main()
{
SF("%d%d", &m, &n);
for(int i = 1; i <= n; i++) SF("%d", &A[i]);
Ans[1] = 1; A[1]--;
for(int i = 2; i <= m; i++) {
int cur = 0;
for(int j = 1; j <= n; j++)
if(A[j] > A[cur] && j != Ans[i-1] && j != Ans[(i+1) % m])
cur = j;
if(cur == 0) { PF("-1"); return 0; }
Ans[i] = cur; A[cur]--;
}
for(int i = 1; i < m; i++) PF("%d ", Ans[i]); PF("%d", Ans[m]);
}