fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int t;
  6. scanf("%d",&t);
  7. while(t--)
  8. {
  9. int n;
  10. scanf("%d",&n);
  11. int c[n+1];
  12. int ans=0;
  13. bool flag=true;
  14. for(int i=1;i<=n;i++)
  15. {
  16. scanf("%d",&c[i]);
  17. if(c[i]==n)
  18. {
  19. flag=false;
  20. }
  21. ans+=c[i];
  22. if(ans>n)
  23. flag=false;
  24. }
  25. if(ans!=n)
  26. flag=false;
  27. if(n==1&&c[1]==0)
  28. printf("0\n");
  29. else if(!flag)
  30. printf("-1\n");
  31. else{
  32. int a[n+1];
  33. for(int i=0;i<n+1;i++)
  34. a[i]=-1;
  35. for(int i=1;i<=n;i++)
  36. {
  37. int k=c[i];
  38. int j=i+1;
  39. while(k!=0)
  40. {
  41. //cout<<1<<endl;
  42. if(j>n)
  43. {
  44. j=1;
  45. }
  46. if(a[j]==-1){
  47. a[j]=i;
  48. k--;
  49. }
  50. j++;
  51. }
  52. }
  53.  
  54. for(int i=1;i<n+1;i++)
  55. printf("%d ",a[i]);
  56. printf("\n");
  57. }
  58. }
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0s 3460KB
stdin
3
3
1 1 1
3
3 0 0
3
2 2 0
stdout
3 1 2 
-1
-1