답안 #579957

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
579957 2022-06-20T11:02:25 Z Mr_Husanboy Xor Sort (eJOI20_xorsort) C++14
25 / 100
12 ms 1236 KB
// Muallif: Mansuraliyev Husanboy Murotali o'g'li  >> NamPS

#include<bits/stdc++.h>

using namespace std;
#define ll long long
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(a) a.begin(), a.end()
#define F first
#define S second

/*struct segtree{
	vector<int> t;
	int sz=0;
	void init(int n){
		t.assign(4*n+1,0);
		sz=n;
	}
	void upd(int x, int l, int r, int ind, int val){
		if(l==r){
			t[x]=val;return;
		}
		int m=(l+r)/2;
		if(ind>m){
			upd(x*2+1,m+1,r,ind,val);
		}else upd(x*2,l,m,ind,val);
		t[x]=t[x*2]^t[x*2+1];
	}
	void upd(int ind, int val){
		upd(1,1,sz,ind,val);
	}
	int get(int x, int l, int r, int lx, int rx){
		if(lx<=l&&r<=rx){
			return t[x];
		}
		if(r<lx||rx<l){
			return 0;
		}
		int m=(l+r)/2;
		return get(x*2,l,m,lx,rx)^get(x*2+1,m+1,r,lx,rx);
	}
	int get(int l,int r){
		return get(1,1,sz,l,r);
	}
};

segtree t;*/

void solve(){
	int n,s;
	cin>>n>>s;
	int a[n];
	for(int i=0;i<n;i++) cin>>a[i];
	vector<pair<int,int> > ans;
	if(s==1){
		for(int i=1;i<n;i++){
			for(int j=0;j<n-i;j++){
				if(a[j]>a[j+1]){
					ans.push_back({j,j+1});
					ans.push_back({j+1,j});
					ans.push_back({j,j+1});
					swap(a[j+1],a[j]);
				}
			}
		}
		cout<<ans.size()<<"\n";
		for(auto u:ans){
			cout<<u.F+1<<' '<<u.S+1<<"\n";
		}
		return;
	}
	
	for(int i=19;i>=0;i--){
		for(int j=0;j<n-1;j++){
			if(a[j]&(1<<i)){
				if(a[j+1]&(1<<i)){
					ans.push_back({j,j+1});
					a[j]^=a[j+1];
				}else{
					ans.push_back({j+1,j});
					ans.push_back({j,j+1});
					a[j+1]^=a[j];
					a[j]^=a[j+1];
				}
			}
		}
	}
	cout<<ans.size()<<"\n";
	for(auto u:ans){
		cout<<u.F+1<<' '<<u.S+1<<"\n";
	}
}


int main(){
	ios;
	//int t=1;   cin>>t; while(t--)
	solve();
}

# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 3 ms 596 KB Output is correct
5 Correct 4 ms 600 KB Output is correct
6 Correct 4 ms 600 KB Output is correct
7 Correct 3 ms 600 KB Output is correct
8 Correct 3 ms 700 KB Output is correct
9 Correct 3 ms 728 KB Output is correct
10 Correct 5 ms 600 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 7 ms 856 KB Output is correct
13 Correct 7 ms 920 KB Output is correct
14 Correct 6 ms 856 KB Output is correct
15 Correct 6 ms 888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 3 ms 596 KB Output is correct
5 Correct 4 ms 600 KB Output is correct
6 Correct 4 ms 600 KB Output is correct
7 Correct 3 ms 600 KB Output is correct
8 Correct 3 ms 700 KB Output is correct
9 Correct 3 ms 728 KB Output is correct
10 Correct 5 ms 600 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 7 ms 856 KB Output is correct
13 Correct 7 ms 920 KB Output is correct
14 Correct 6 ms 856 KB Output is correct
15 Correct 6 ms 888 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 4 ms 600 KB Output is correct
18 Correct 6 ms 856 KB Output is correct
19 Correct 6 ms 856 KB Output is correct
20 Correct 5 ms 856 KB Output is correct
21 Correct 7 ms 856 KB Output is correct
22 Correct 6 ms 856 KB Output is correct
23 Correct 6 ms 856 KB Output is correct
24 Correct 7 ms 856 KB Output is correct
25 Correct 6 ms 856 KB Output is correct
26 Incorrect 12 ms 1236 KB Integer 59568 violates the range [0, 40000]
27 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 316 KB Not sorted
2 Halted 0 ms 0 KB -