#include <iostream> using namespace std; int w=0; int zamiana(int i,int p,int k,int n,int *a) { int pomocnicza,m; int licznik=0; do { licznik++; }while(a[i]==a[k+licznik-1]&&n!=(licznik+k-1)); if((k+licznik-1)==n) { w=-1; return w; } if(a[i]!=a[k+licznik-1]) { do { if(a[i]!=a[i+1]&&(i+1)!=k) { pomocnicza=a[i]; a[i+1]=a[i]; a[i]=pomocnicza; w++; } i++; }while(i!=k); m=licznik+k-1; do { pomocnicza=a[m]; a[m]=a[m-1]; a[m-1]=pomocnicza; m--; w++; }while(m!=k-1); return w; } else { w=-1; return w; } } int main() { int k,n; cin>>n>>k; int *a=new int[n]; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=k;i>0;i--) { for(int p=i-1;p>=0;p--) { if(a[i]==a[p]) { w=zamiana(i,p,k,n,a); if(w==-1) { cout<<w; return 0; } } } } cout<< w; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <iostream> using namespace std; int w=0; int zamiana(int i,int p,int k,int n,int *a) { int pomocnicza,m; int licznik=0; do { licznik++; }while(a[i]==a[k+licznik-1]&&n!=(licznik+k-1)); if((k+licznik-1)==n) { w=-1; return w; } if(a[i]!=a[k+licznik-1]) { do { if(a[i]!=a[i+1]&&(i+1)!=k) { pomocnicza=a[i]; a[i+1]=a[i]; a[i]=pomocnicza; w++; } i++; }while(i!=k); m=licznik+k-1; do { pomocnicza=a[m]; a[m]=a[m-1]; a[m-1]=pomocnicza; m--; w++; }while(m!=k-1); return w; } else { w=-1; return w; } } int main() { int k,n; cin>>n>>k; int *a=new int[n]; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=k;i>0;i--) { for(int p=i-1;p>=0;p--) { if(a[i]==a[p]) { w=zamiana(i,p,k,n,a); if(w==-1) { cout<<w; return 0; } } } } cout<< w; return 0; } |