結果
| 問題 |
No.366 ロボットソート
|
| コンテスト | |
| ユーザー |
MotoSai114
|
| 提出日時 | 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;
}
MotoSai114