結果

問題 No.1854 Limited Bubble Sort
ユーザー 沙耶花沙耶花
提出日時 2022-02-25 22:40:52
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 13 ms / 2,000 ms
コード長 1,293 bytes
コンパイル時間 4,151 ms
コンパイル使用メモリ 263,856 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-07-03 17:37:11
合計ジャッジ時間 5,494 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,812 KB
testcase_01 AC 2 ms
6,940 KB
testcase_02 AC 3 ms
6,940 KB
testcase_03 AC 2 ms
6,940 KB
testcase_04 AC 3 ms
6,940 KB
testcase_05 AC 2 ms
6,940 KB
testcase_06 AC 2 ms
6,944 KB
testcase_07 AC 3 ms
6,944 KB
testcase_08 AC 2 ms
6,948 KB
testcase_09 AC 2 ms
6,944 KB
testcase_10 AC 2 ms
6,944 KB
testcase_11 AC 5 ms
6,940 KB
testcase_12 AC 4 ms
6,940 KB
testcase_13 AC 7 ms
6,944 KB
testcase_14 AC 5 ms
6,940 KB
testcase_15 AC 4 ms
6,940 KB
testcase_16 AC 7 ms
6,944 KB
testcase_17 AC 7 ms
6,944 KB
testcase_18 AC 7 ms
6,940 KB
testcase_19 AC 8 ms
6,944 KB
testcase_20 AC 7 ms
6,940 KB
testcase_21 AC 6 ms
6,944 KB
testcase_22 AC 10 ms
6,940 KB
testcase_23 AC 7 ms
6,940 KB
testcase_24 AC 13 ms
6,940 KB
testcase_25 AC 3 ms
6,940 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdio.h>
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
using mint = modint998244353;
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)
#define Inf 1000000001

int main(){
	
	
	
	int _t;
	cin>>_t;
	
	rep(_,_t){
		
		int n;
		cin>>n;
		
		vector<int> p(n);
		rep(i,n){
			cin>>p[i];
			p[i]--;
		}
		bool f = true;
		vector<int> a;
		rep(i,n){
			int ind = 0;
			rep(j,n){
				if(p[j]==i){
					ind = j;
					break;
				}
			}
			while(ind!=i){
				int cur = ind-1;
				bool F = false;
				while(true){
					
					if(cur==-1 || p[cur] < i){
						F = true;
						break;
					}
					if(cur==p[cur]){
						f = false;
						break;
					}
					if(cur+1 == p[cur])cur--;
					else break;
				}
				if(!f)break;
				//cout<<cur<<endl;
				if(F){
					while(p[i] != i){
						a.push_back(ind-1);
						swap(p[ind],p[ind-1]);
						ind--;
					}
				}
				else{
					while(cur!=ind){
						a.push_back(cur);
						swap(p[cur],p[cur+1]);
						cur++;
					}
					ind--;
				}
			}
			if(!f)break;
		}
		if(!f){
			cout<<-1<<endl;
		}
		else{
			/*
			rep(i,n)cout<<p[i]<<',';
			cout<<endl;
			*/
			//assert(a.size()<=n*n);
			cout<<a.size()<<endl;
			rep(i,a.size()){
				if(i!=0)cout<<' ';
				cout<<a[i]+1;
			}
			cout<<endl;
		}
		
	}
	
	return 0;
}
0