제출 #315199

#제출 시각아이디문제언어결과실행 시간메모리
315199thtsshz_bgwrswhMouse (info1cup19_mouse)C++17
0 / 100
1 ms256 KiB
#pragma GCC optimize("Ofast")
#include "grader.h"
#include<stdio.h>
#include<algorithm>
#include<assert.h>
using namespace std;
int num[500];
bool check[500],wrong[500];
void solve(int n){
	int i,j;
	for(i=0;i<n;i++)
		wrong[i]=check[i]=0;
	vector<int> vec(n);
	for(i=0;i<n;i++)
		vec[i]=i+1;
	random_shuffle(vec.begin(),vec.end());
	int now=query(vec);
	if(now==n)
		return;
	for(i=0;i<n;i++){
		for(j=i+1;j<n;j++){
			swap(vec[j],vec[i]);
			int v=query(vec);
			if(v==n)
				return;
			if(v==now-2)
				check[i]=check[j]=1;
			else if(v==now)
				wrong[i]=wrong[j]=1;
			swap(vec[i],vec[j]);
		}
	} 
	vector<int> order;
	for(i=0;i<n;i++)
		if(wrong[i])
			order.emplace_back(i);
	for(i=0;i<n;i++)
		check[i]=0;
	for(i=0;i<(int)order.size();i++){
		for(j=i+1;j<(int)order.size();j++){
			if(check[order[j]])
				continue;
			swap(vec[order[i]],vec[order[j]]);
			int v=query(vec);
			if(v==n)
				return;
			if(v==now+2){
				now+=2;
				check[order[i]]=check[order[j]]=1;
				break;
			}
			swap(vec[order[i]],vec[order[j]]);
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...