답안 #1072812

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1072812 2024-08-24T05:32:22 Z emptypringlescan Building Skyscrapers (CEOI19_skyscrapers) C++17
0 / 100
3500 ms 1112 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++){
			bool nxt=false;
			if(!i) nxt=true;
			for(int j=0; j<i; j++){
				if(abs(arr[i].first.first-arr[j].first.first)<=1&&abs(arr[i].first.second-arr[j].first.second)<=1) nxt=true;
			}
			if(!nxt) 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 1 ms 348 KB ans=NO N=4
4 Correct 1 ms 348 KB ans=YES N=5
5 Correct 1 ms 348 KB ans=YES N=9
6 Correct 0 ms 348 KB ans=YES N=5
7 Execution timed out 3555 ms 348 KB Time limit exceeded
8 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 1 ms 348 KB ans=NO N=4
4 Correct 1 ms 348 KB ans=YES N=5
5 Correct 1 ms 348 KB ans=YES N=9
6 Correct 0 ms 348 KB ans=YES N=5
7 Execution timed out 3555 ms 348 KB Time limit exceeded
8 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 1 ms 348 KB ans=NO N=4
4 Correct 1 ms 348 KB ans=YES N=5
5 Correct 1 ms 348 KB ans=YES N=9
6 Correct 0 ms 348 KB ans=YES N=5
7 Execution timed out 3555 ms 348 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3547 ms 348 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 1 ms 348 KB ans=NO N=4
4 Correct 1 ms 348 KB ans=YES N=5
5 Correct 1 ms 348 KB ans=YES N=9
6 Correct 0 ms 348 KB ans=YES N=5
7 Execution timed out 3555 ms 348 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3528 ms 1112 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3547 ms 348 KB Time limit exceeded
2 Halted 0 ms 0 KB -