#include <bits/stdc++.h>
#define ll long long
#define inf (ll)(1e15)
#define mod (ll)1e9+7
#define dbg(x) cerr <<#x << ' ' << x <<endl;
using namespace std;
void printvec(vector<ll>& v)
{
for (auto &&i : v)
{
cout <<i<<' ';
}
cout << endl;
}
map<pair<ll,ll>,bool> vis;
map<pair<ll,ll>,ll> ra9m;
bool good(pair<ll,ll> cell)
{
vector<ll> pr={-1,1};
for (int i=0;i<2;i++)
{
for (int j=0;j<2;j++)
{
ll v1=pr[i];
ll v2=pr[j];
if(vis[{cell.first+v1,cell.second+v2}])
{
return true;
}
}
}
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
ll n;
cin>>n;
ll t;
cin>>t;
set<pair<ll,ll>> st;
for (int i=0;i<n;i++)
{
ll c, r;
cin>>c>>r;
st.insert({c,r});
ra9m[{c,r}]=i+1;
}
vis[*st.begin()]=1;
vector<ll> s;
s.push_back(ra9m[*st.begin()]);
st.erase(st.begin());
bool possible=true;
while(!st.empty())
{
bool did=false;
for (auto &&e : st)
{
if(good(e))
{
did=true;
vis[e]=1;
st.erase(e);
s.push_back(ra9m[e]);
break;
}
}
if(!did)
{
possible=false;
break;
}
}
if(!possible)
{
cout << "NO" << endl;
}
else
{
for (int i=0;i<n;i++)
{
cout << s[i]<<endl;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |