結果
問題 |
No.366 ロボットソート
|
ユーザー |
![]() |
提出日時 | 2016-05-09 20:09:59 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 881 bytes |
コンパイル時間 | 1,407 ms |
コンパイル使用メモリ | 159,760 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-29 17:52:45 |
合計ジャッジ時間 | 2,198 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
#include "bits/stdc++.h" using namespace std; void swap(int *x,int *y){ int tmp = *x; *x=*y; *y=tmp; } int main(){ int N,K,count=0,OK=0,OK2=0,FLAG=0; cin >> N >> K; int data[N]; for(auto&& x: data)cin >> x; while(1){ FLAG=1; if(K>=N) break; int j=0; for(int i=j;i<N;++i){ for(;j<N-K;++j){ OK=0; if(data[j]>data[j+K]){ FLAG=0; break; } OK=1; } if(!OK){ swap(&data[j],&data[j+K]); ++count; }else break; // for(auto&& x: data)cout << x << " "; // cout <<endl; } for(int i=0;i<N-1;++i){ OK2=0; if(data[i]>data[i+1])break; OK2=1; } if(OK2||FLAG)break; } for(int i=0;i<N-1;++i){ OK=0; if(data[i]>data[i+1])break; OK=1; } if(OK||N==1)cout << count <<endl; else cout << -1 <<endl; return 0; }