Submission #1302997

#TimeUsernameProblemLanguageResultExecution timeMemory
1302997Muhammad_AneeqBuilding Skyscrapers (CEOI19_skyscrapers)C++20
54 / 100
371 ms105472 KiB
#include <bits/stdc++.h>
using namespace std;
inline void solve()
{
	int n,t;
	cin>>n>>t;
	int r[n],c[n];
	map<pair<int,int>,int>pre,ind;
	for (int i=0;i<n;i++)
	{
		cin>>r[i]>>c[i];
		pre[{r[i],c[i]}]=1;
		ind[{r[i],c[i]}]=i+1;
	}
	pair<int,int>cur={1e9,1e9};
	for (int i=0;i<n;i++)
	{
		pair<int,int>f={r[i],c[i]};
		cur=min(cur,f);
	}
	vector<int>ans;
	set<pair<int,int>>S;
	S.insert(cur);
	pre[cur]=0;
	while (S.size())
	{
		pair<int,int>g=*begin(S);
		S.erase(g);
		ans.push_back(ind[g]);
		for (int i=-1;i<=1;i++)
		{
			for (int j=-1;j<=1;j++)
			{
				pair<int,int>f={g.first+i,g.second+j};
				if (pre[f])
				{
					pre[f]=0;
					S.insert(f);
				}
			}
		}
	}
	if (ans.size()!=n)
	{
		cout<<"NO\n";return;
	}
	cout<<"YES\n";
	for (auto i:ans)
		cout<<i<<'\n';
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#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...