#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
using namespace std;
// using namespace __gnu_pbds;
#define SPEED ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ALL(x) x.begin(), x.end()
#define sz(x) (intt)x.size()
#define intt long long
// #define endl "\n"
const intt mod = 1e9 + 7;
const intt mxN = 200001;
const intt mxA = 5e4 + 31;
const intt inf = 1e9;
vector<intt> C(mxN);
intt cost = 0;
intt cmp_interaction(intt a, intt b) {
cout << "cmp " << a << " " << b << endl;
intt x;
cin >> x;
return x;
}
void rev(intt l, intt r) {
cout << "reverse " << l << " " << r << endl;
reverse(C.begin() + l - 1, C.begin() + l + r - 2);
cost += (r - l + 1);
}
void solve() {
intt N1, N2;
cin >> N1 >> N2;
C.resize(N1 + N2 + 1);
intt cock = 0;
for(intt i = 1; i <= N1 - cock; i++) {
intt l = N1 + 1, r = N1 + N2;
while(r - l > 1) {
intt mid = (l + r) / 2;
intt ans = cmp_interaction(i, mid);
if(ans == -1) {
r = mid;
} else if(ans == 1) {
l = mid;
} else {
l = mid;
break;
}
}
intt last_ask = cmp_interaction(i, l);
if(last_ask == -1 || last_ask == 0) {
// soluna girecek
rev(i, l - 1);
if(i != l - 2)
rev(i, l - 2);
--i;
cock++;
} else if(last_ask == 1) {
rev(i, l - 1);
rev(l - 1, l);
rev(i, l - 1);;
}
}
cout << "end" << endl;
// for(intt i = 1; i <= N1 + N2; i++) {
// cout << C[i] << " ";
// }
// cout << cost << endl;
}
signed main() {
SPEED;
intt tst = 1;
// cin >> tst;
while(tst--)
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |