답안 #969973

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
969973 2024-04-26T02:54:05 Z LCJLY Park (JOI17_park) C++14
0 / 100
98 ms 652 KB
#include "park.h"

//code
//Answer(a,b)
//Ask(a,b,Place)
#include <bits/stdc++.h>
using namespace std;

#define show(x,y) cout << y << " " << #x << endl;
#define show2(x,y,i,j) cout << y << " " << #x << "  " << j << " " << #i << endl;
#define show3(x,y,i,j,p,q) cout << y << " " << #x << "  " << j << " " << #i << "  " << q << " " << #p << endl;
#define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl;
typedef pair<long long,long long>pii;
typedef pair<int,pii>pi2;

int m=0;
set<pii>edge;
void dnc(int l, int r){
	int lft=0;
	int rgt=m-1;
	int mid;
	int best=rgt+1;
	
	while(lft<=rgt){
		mid=(lft+rgt)/2;
		int v[m];
		memset(v,0,sizeof(v));
		for(int x=0;x<=mid;x++){
			v[x]=1;
		}
		v[l]=1;
		v[r]=1;
		//show4(v,v);
		//show2(l,l,r,r);
		bool amos=Ask(min(l,r),max(l,r),v);
		if(amos){
			rgt=mid-1;
		}
		else{
			best=mid;
			lft=mid+1;
		}
	}
	
	if(best==m){
		edge.insert({min(l,r),max(l,r)});
	}
	else{
		//show(best,best+1);
		dnc(l,best+1);
		dnc(best+1,r);
	}
}

void Detect(int t, int n) {
	//show2(t,t,n,n);
	m=n;
	for(int x=1;x<n;x++){
		dnc(0,n-1);
	}	
	//dnc(0,n-1);
	
	for(auto &it:edge){
		//show2(it.first,it.first,it.second,it.second);
		Answer(it.first,it.second);
	}
}
//code
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 352 KB Wrong Answer[6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 52 ms 652 KB Wrong Answer[5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 75 ms 348 KB Wrong Answer[5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 52 ms 488 KB Wrong Answer[5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 98 ms 504 KB Wrong Answer[5]
2 Halted 0 ms 0 KB -