답안 #1072809

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1072809 2024-08-24T05:29:26 Z emptypringlescan Building Skyscrapers (CEOI19_skyscrapers) C++17
0 / 100
3500 ms 1628 KB
#include <bits/stdc++.h>
using namespace std;
struct custom_hash{
	size_t operator()(pair<long long,long long> x) const{
		return x.first*(1e9+5)+x.second;
	}
};
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int32_t main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n,t;
	cin >> n >> t;
	pair<pair<int,int>,int> arr[n];
	for(int i=0; i<n; i++){
		cin >> arr[i].first.first >> arr[i].first.second;
		arr[i].second=i;
	}
	sort(arr,arr+n);
	do{
		bool can=true;
		unordered_set<pair<int,int>,custom_hash> got;
		for(int i=0; i<n-1; i++){
			if(abs(arr[i].first.first-arr[i+1].first.first)>1||abs(arr[i].first.second-arr[i+1].first.second)>1) can=false;
			if(!can) break;
			got.clear();
			for(int j=0; j<i; j++) got.insert(arr[j].first);
			queue<pair<int,int> > q;
			q.push(arr[i].first);
			while(!q.empty()){
				pair<int,int> x=q.front();
				q.pop();
				if(got.find(x)!=got.end()) continue;
				got.insert(x);
				if(abs(arr[i].first.first-x.first)>10||abs(arr[i].first.second-x.second)>10) break;
				for(int j=0; j<4; j++){
					pair<int,int> nx={x.first+dx[j],x.second+dy[j]};
					if(got.find(nx)==got.end()) q.push(nx);
				}
			}
			while(!q.empty()) q.pop();
		}
		if(can){
			cout << "YES\n";
			for(int i=0; i<n; i++) cout << arr[i].second+1 << ' ';
			return 0;
		}
	} while(next_permutation(arr,arr+n));
	cout << "NO";
}



# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ans=YES N=1
2 Correct 0 ms 348 KB ans=YES N=4
3 Correct 0 ms 348 KB ans=NO N=4
4 Incorrect 2 ms 348 KB Contestant did not find solution
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ans=YES N=1
2 Correct 0 ms 348 KB ans=YES N=4
3 Correct 0 ms 348 KB ans=NO N=4
4 Incorrect 2 ms 348 KB Contestant did not find solution
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ans=YES N=1
2 Correct 0 ms 348 KB ans=YES N=4
3 Correct 0 ms 348 KB ans=NO N=4
4 Incorrect 2 ms 348 KB Contestant did not find solution
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3587 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ans=YES N=1
2 Correct 0 ms 348 KB ans=YES N=4
3 Correct 0 ms 348 KB ans=NO N=4
4 Incorrect 2 ms 348 KB Contestant did not find solution
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3535 ms 1628 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3587 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -