This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N = 151111;
int dir[8][2] = {{-1,-1},{-1,0},{-1,+1},{0,-1},{0,+1},{1,-1},{1,0},{1,+1}};
map<pii,int> indx;
set<pii> unused;
set<pii> can;
vector<pii> ord;
void add_cell(pii xx){
pii nx;
for(int v = 0;v < 8 ; v ++ ){
nx = mp(xx.fi+dir[v][0],xx.se+dir[v][1]);
if(unused.count(nx)){
unused.erase(nx);
can.insert(nx);
}
}
}
int main(){
fastIO;
int n;
cin >> n;
int typ;
cin >> typ;
pii cc;
pii root;
for(int i = 1; i <= n; i ++ ){
cin >> cc.fi >> cc.se;
indx[cc]=i;
if(i>1){
unused.insert(cc);
}
else{
root = cc;
}
}
add_cell(root);
ord.push_back(root);
pii gg;
while(!can.empty()){
gg = *can.begin();
can.erase(can.begin());
ord.push_back(gg);
add_cell(gg);
}
if(!unused.empty()){
cout << "NO\n";
return 0;
}
cout << "YES\n";
for(auto x : ord){
cout << indx[x] << " ";
}
cout << "\n";
return 0;
}
# | 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... |