제출 #1339974

#제출 시각아이디문제언어결과실행 시간메모리
1339974Ivo_12Nizovi (COI14_nizovi)C++20
20 / 100
50 ms496 KiB
#include <bits/stdc++.h>
#define ll long long
#define F first
#define S second
#define pii pair < int, int >
#define pb push_back
#define mp make_pair
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)

using namespace std;

const int N = 1e3+10;
int reqpos[N];

int b_search( int i, int l, int r ) {
	
	int mid;
	int temp;
	while(l != r) {
		mid = l + (r-l) / 2;
		cout << "cmp " << i + 1 << " " << mid + 1 << "\n" << flush;
		cin >> temp;
		
		if(temp == -1) r = mid;
		else l = mid + 1;
	}
	
	return l;
}

void zamjeni( int l1, int r1, int l2, int r2 ) {
	
	cout << "reverse " << l1 + 1 << " " << r2 + 1 << "\n" << flush;
	cout << "reverse " << l1 + 1 << " " << r2 - l2 + l1 + 1 << "\n" << flush;
	cout << "reverse " << r2 - l2 + l1 + 2 << " " << r2 + 1 << "\n" << flush;
	
	return;
}

void task( void ) {
	
	int n, m;
	cin >> n >> m;
	cout << flush;
	
	for(int i = 0; i < n; i++) {
		reqpos[i] = b_search(i, n, n + m) - 1;
	}
	
	int curl = 0;
	
	for(int i = 0; i < n; i++) {
		zamjeni(curl, curl + n - i - 1, curl + n - i, reqpos[i]);
		curl = reqpos[i] - n + i + 2;
	}
	
	cout << "end\n" << flush;
	
	return;
}

int main( void ) {
	
	FIO;
	int tt = 1;
	while(tt--) task();
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...