제출 #1152063

#제출 시각아이디문제언어결과실행 시간메모리
1152063arkanefuryMouse (info1cup19_mouse)C++20
40.67 / 100
77 ms420 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;
int b[N];
	vector<int>q, lp;
void solve(int n){
	FORR(i, n, 1, 1) {
		q.pb(i);
	}
	ans = query(q);
	if(ans==n)return;
	FOR(i, 1, 1, 1) {
		FOR(j, i, n-1, 1){
			swap(q[i-1], q[j]);
			sum = query(q);
			if(sum==n)return;
			if(sum == ans + 1){
				bool f = 0;
				FOR(ok, i, n-1, 1){
					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)
					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]);
		}
	}
	b[1] = 1;
	FOR(i,2,n,1){
	    if(b[i])continue;
	    swap(q[0], q[i-1]);
	    sum = query(q);
	    if(ans - 2 == sum)b[i] = 1;
	    swap(q[0], q[i-1]);
	}
	FOR(i, 1, n-1, 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 == ans){
	                ans ++;
	                swap(q[0], q[j]);
	                sum = query(q);
	                if(ans + 1 == sum)b[j+1] = 1, ans ++;
	                if(ans==n)return;
	                break;
	            }
	            swap(q[i-1], q[j]);
	        }
	    }
	}
	query(q);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...