This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
string a="CMPSWP ";
vector<string> resp;
string cl="";
bool usou[110]={};
void compare(int n1, int b){
if(usou[n1] || usou[b]){
resp.push_back(cl);
cl="";
for(int i=1; i<=100; i++)
usou[i]=false;
}
string aux=a;
aux+="R";
aux+=to_string(n1);
aux+=" R";
aux+=to_string(b);
aux+=" ";
usou[n1]=true;
usou[b]=true;
cl+=aux;
}
void bitonicMerge(int lo, int n){
if(n>1){
int m=1;
while(n>=(1<<(m+1)))
m<<=1;
for(int i=lo; i<lo+n-m; i++)
compare(i, i+m);
bitonicMerge(lo, m);
bitonicMerge(lo+m, n-m);
}
}
void bitonicsort(int lo, int n){
if(n>1){
int m=n/2;
bitonicsort(lo, m);
bitonicsort(lo+m, n-m);
bitonicMerge(lo, n);
}
}
int main(){
int n;
cin >> n;
bitonicsort(1, n);
cout << resp.size() << endl;
for(auto x:resp)
cout << x << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |