제출 #1151966

#제출 시각아이디문제언어결과실행 시간메모리
1151966arkanefuryMouse (info1cup19_mouse)C++20
33.41 / 100
79 ms428 KiB
#include <bits/stdc++.h>
#include "grader.h"
#define pb push_back
using namespace std;
#define F first
#define sz size()
#define S second
#define in insert
#define all(v) v.begin(), v.end()
#define FOR(x, n, m, d) for(int x = n; x <= m; x += d)
#define FORR(x, n) for(int i = x; i >= n; i --)
#define nikita ios_base::sync_with_stdio(0), cin.tie(0);
const int N = 300+5;
int n,m,k,tt,ans,sum=0,l, r, x, y, cnt, block = 448;
int a[N][N], b[N], c[N];
void solve(int n) {
	vector<int>q, v;
	FOR(i, 1, n, 1) {
		q.pb(i);
	}
	random_shuffle(all(q));
	ans = query(q);
	if(ans==n)return;
	FOR(i, 1, n-1, 1) {
		bool ji = 0;
		if(b[i])continue;
		FOR(j, i, n-1, 1){
			if( b[j+1] )continue;
			swap(q[i-1], q[j]);
			sum = query(q);
			if(sum==n)return;
			v = q;
			if(ans==sum)c[j+1] = 1;
			if(sum == ans + 1){
				bool f = 0;
				FOR(ok, i, n-1, 1) {
					if(b[ok+1])continue;
					swap(q[i-1], q[ok]);
					k = query(q);
					if(k==n)return;
					swap(q[i-1], q[ok]);
					if(k > sum)f = 1;
				}
				ans++;
				if(!f) {
					q = v;
					break;
				}
				else b[j+1] = 1;
			}
			else if(sum==ans+2) {
				ans += 2;
				b[i] = b[j+1] = 1;
				break;
			}
			else swap(q[i-1], q[j]);
		}
	}
	query(q);
}
/*
signed main()
{
    nikita
    tt = 1;
    if(!tt)cin >> tt;
    FOR(i, 1, tt, 1){
    solve();
    }
}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...