제출 #1152007

#제출 시각아이디문제언어결과실행 시간메모리
1152007arkanefuryMouse (info1cup19_mouse)C++20
0 / 100
0 ms324 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, m, d) for(int x = n; x >= m; x -= d)
#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][N];
void solve(int n) {
	vector<int>q, v;
	FORR(i, n, 1, 1) {
		q.pb(i);
	}
	ans = query(q);
	if(ans==n)return;
	FOR(i, 1, 1, 1) {
		bool ji = 0;
		if(b[i])continue;
		FOR(j, i, n-1, 1){
			if( b[j+1] || c[i][j])continue;
			c[i][j] = 1;
			swap(q[i-1], q[j]);
			sum = query(q);
			if(sum==n)return;
			v = q;
			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]);
		}
	}
	
	FOR(i,2,n,1){
	    if(b[i])continue;
	    swap(q[0], q[i-1]);
	    sum = query(q);
	    if(ans + 1 == sum)b[i] = 1, ans ++;
	    swap(q[0], q[i-1]);
	}
	FOR(i, 1, n, 1){
	    if(!b[i]){
	        bool f = 0;
	        swap(q[0], q[i-1]);
	        FOR(j, i, n-1, 1){
	            if(b[j+1])continue;
	            swap(q[i-1], q[j]);
	            sum = query(q);
	            if(sum==n)return;
	            if(sum == ans + 1){
	                ans ++;
	                swap(q[0], q[j]);
	                break;
	            }
	        }
	    }
	}
	cout << 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...