제출 #1131213

#제출 시각아이디문제언어결과실행 시간메모리
1131213JuanJLBuilding Skyscrapers (CEOI19_skyscrapers)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>

#define fst first
#define snd second
#define pb push_back
#define SZ(x) (int)x.size()
#define ALL(x) x.begin(),x.end()
#define forn(i,a,b) for(int i = a; i < b; i++)
using namespace std;
typedef long long ll;

int main(){
	ll n,t; cin>>n>>t;
	if(t==2){ cout<<"NO\n"; return 0; }
	
	vector<pair<ll,pair<pair<ll,ll>,ll>>> build(n);
	forn(i,0,n){
		cin>>build[i].snd.fst.fst>>build[i].snd.fst.snd;
		build[i].fst=build[i].snd.fst.fst+build[i].snd.fst.snd;
		build[i].snd.snd=i;
	}
	
	sort(ALL(build));
	
	bool yes = true;
	
	vector<ll> res = {build[0].snd.snd};
	
	pair<ll,ll> pos=build[0].snd.fst;
	forn(i,1,n){
		pair<ll,ll> aux = build[i].snd.fst;
		if(abs(aux.fst-pos.fst)<=1 && abs(aux.snd-pos.snd) <=1){
			pos=build[i].snd.fst;
			res.pb(build[i].snd.snd);
		}else yes=false;
	}
	
	if(!yes) cout<<"No\n";
	else{
		cout<<"Yes\n";
		forn(i,0,SZ(res)) cout<<res[i]+1<<'\n';
	}
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...