fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. // #define in(a, b) for (ll i = (a); i <= (b); i++) // in using i
  4. // #define inj(a, b) for (ll j = (a); j <= (b); j++) // in using j
  5. // #define ink(a, b) for (ll k = (a); k <= (b); k++) // in using k
  6. // #define inr(a, b) for(ll i = (a); i >= (b); i--) // in reverse
  7. // #define it ll tcs; cin>>tcs; while(tcs--) // include test cases
  8. // #define ina(arr,n) ll arr[(n+1)]; in(1,n) cin>>arr[i] // input arr of n elements
  9. // #define pb push_back
  10. // #define vll vector<ll> v
  11. // ll mod= 1e9+7;
  12. using namespace std;
  13. // void PrimeSieve(ll n){
  14. // ll count=0;
  15. // ll a[n+1];
  16. // in(1,n) a[i]=i;
  17. // in(2,n){
  18. // if(a[i]!=0){
  19. // count++;
  20. // // cout<<i<<endl;
  21. // for(ll j=i;j<=n;j+=i){
  22. // a[j]=0;
  23. // }
  24. // }
  25. // }
  26. // cout<<count;
  27. // }
  28. int main(){
  29. ios_base::sync_with_stdio(false);
  30. cin.tie(NULL);
  31. // cout.tie(NULL);
  32. cout<<setprecision(30);
  33.  
  34.  
  35.  
  36.  
  37.  
  38. ll tt;
  39. cin>>tt;
  40. while((tt--)){
  41. ll n;
  42. cin>>n;
  43. bool b=1;
  44. bool arr[n];
  45. for(int i=0;i<n;i++) arr[i]=1;
  46. ll a[n];
  47. for(int i=0;i<n;i++) a[i] = -1;
  48. for(int i=n-1;i>=0;i--){
  49. for(ll j=n-1;j>=0;j--){
  50. if((sqrt(i+j)*sqrt(i+j)==i+j)&&(arr[j]==1)){
  51. a[i]=j;
  52. arr[j]=0;
  53. break;
  54. }
  55. }
  56. }
  57. for(int i=0;i<n;i++){
  58. if(a[i]==-1){
  59. b=0;
  60. break;
  61. }
  62. }
  63. if(!b) cout<<-1<<" ";
  64. else for(int i=0;i<n;i++) cout<<a[i]<<" ";
  65. cout<<endl;
  66. }
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. return 0;
  74. }
  75.  
Success #stdin #stdout 0.01s 5352KB
stdin
3
3
4
7
stdout
1 0 2 
0 3 2 1 
4 3 2 1 0 6 5