제출 #1025351

#제출 시각아이디문제언어결과실행 시간메모리
1025351tolbiXor Sort (eJOI20_xorsort)C++17
40 / 100
41 ms1196 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n,s;cin>>n>>s;
	vector<int> arr(n);
	for (int i = 0; i < n; ++i)
	{
		cin>>arr[i];
	}
	vector<pair<int,int>> ansarr;
	if (s==2){
		for (int bit = 22; bit >= 0; bit--){
			for (int i = 0; i+1 < n; i++){
				if (arr[i]&(1LL<<bit)){
					if (arr[i+1]&(1LL<<bit)){
						ansarr.push_back({i+1,i+2});
						arr[i]^=arr[i+1];
					}
					else {
						ansarr.push_back({i+2,i+1});
						ansarr.push_back({i+1,i+2});
						arr[i+1]^=arr[i];
						arr[i]^=arr[i+1];
					}
				}
			}
			if ((n>=1) && (arr[n-1]&(1LL<<bit))){
				n--;
			}
		}
	}
	else {
		for (int i = n; i >= 1; i--){
			int maele = 0;
			for (int j = 0; j < i; j++){
				if (arr[j]>arr[maele]) maele=j;
				if (j+1<i){
					ansarr.push_back({j+1,j+2});
				}
			}
			for (int j = 0; j+1 < maele; j++){
				ansarr.push_back({j+1,j+2});
			}
			for (int j = maele; j+1 < i; j++){
				ansarr.push_back({j+2,j+1});
			}
			for (int k = maele; k + 1 < i; k++){
				swap(arr[k],arr[k+1]);
			}
		}
		for (int i = n; i >= 2; i--){
			ansarr.push_back({i-1,i});
		}
	}
	cout<<ansarr.size()<<endl;
	for (int i = 0; i < ansarr.size(); ++i)
	{
		cout<<ansarr[i].first<<" "<<ansarr[i].second<<endl;
	}
}

컴파일 시 표준 에러 (stderr) 메시지

xorsort.cpp: In function 'int main()':
xorsort.cpp:59:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |  for (int i = 0; i < ansarr.size(); ++i)
      |                  ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...