# Help me in solving SWAPNUM31 problem

### My issue

It says it fails for some testcases. Can someone explain how?

### My code

``````#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
int t{};
cin>>t;
int n,k;
while(t--)
{
cin>>n>>k;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
for (int i = 0; i < n; i++)
{
for (int j = i+k; j < n; j+=k)
{
if (a[i]>a[j])
{
int temp = a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
for (int i = 0; i < n; i++)
cout<<a[i]<<" ";
cout<<endl;
}

return 0;
}

``````

Problem Link: SWAPNUM31 Problem - CodeChef

@divyanshum3232
For the smaller values of K your code will touch n^2 complexity which is not allowed.
if u observe it carefully u will se for k<=n/2 u will be able to rearrange the elements in any order u want.
Thus for k<=n/2 the answer would be sorted array.
and for k>n/2 u will not able to rearrange the elements between n-k to k index and rest of the element can be sorted.
thats the whole logic
This is my code i hope u will get it.
include <bits/stdc++.h>
using namespace std;

int main() {
int t;
cin>>t;
while(tâ€“)
{
int n,k;
cin>>n>>k;
int a[n];
vector v;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
if(n>=2*k)
{
sort(a,a+n);
}
else
{
for(int i=0;i<n;i++)
{
if(i>=k||i<n-k)
{
v.push_back(a[i]);
}
}
sort(v.begin(),v.end());
int j=0;
for(int i=0;i<n;i++)
{
if(i>=k||i<n-k)
{
a[i]=v[j];
j++;
}
}
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
}