#include #define MAXN 1001 FILE * in; FILE * out; int N, M; int data[MAXN+1]; int getInvCount(int arr[], int n){ int inv_count = 0; for (int i = 0; i < n - 1; i++) for (int j = i+1; j < n; j++) if (arr[i] > arr[j]) inv_count++; return inv_count; } void printData(){ for(int i = 0; i <= N ;i++){ fprintf(out, "%d ", data[i]); } fprintf(out, "\n"); } int main(){ in = fopen("add.in","r+"); out = fopen("add.out","w+"); fscanf(in, "%d %d", &N, &M); int tmp; data[0] = N + 1; for (int i=0;i < N;i++){ fscanf(in, "%d", &tmp); data[i+1] = tmp; } int current = getInvCount(data, N+1); bool found = false; if(current == M){ printData(); found = true; }else{ for(int i = 0; i < N;i++){ tmp = data[i]; data[i] = data[i+1]; data[i+1] = tmp; current--; if (current == M){ found = true; printData(); break; } } } if(!found){ fprintf(out,"Impossible\n"); } fclose (in); fclose (out); return 0; }