Submission #1246104

#TimeUsernameProblemLanguageResultExecution timeMemory
1246104KindaGoodGamesBuilding Skyscrapers (CEOI19_skyscrapers)C++20
8 / 100
200 ms9284 KiB
#include<bits/stdc++.h>

using namespace std;
#define pii pair<int,int>
#define tiii tuple<int,int,int>

vector<pii> dirs = {{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,1},{1,-1},{-1,-1},};
int main(){
    int n, t;
    cin >> n >> t;

    map<pii,int> occ;
    vector<tiii> arr(n);
    for(int i = 0; i < n; i++){
        int r,c;
        cin >> r >> c;
        arr[i] = {r,c,i}; 
        occ[{r,c}] = i;
    }

    set<pii> vis;
    queue<pii> q;
    q.push((*(occ.begin())).first);
    vector<int> ans;
    
    while(q.size()){
        int r,c;
        tie(r,c) = q.front(); q.pop();

        if(!occ.count({r,c}) || vis.count({r,c})) {
            continue;
        }
        ans.push_back(occ[{r,c}]);
        vis.insert({r,c});

        for(pii p : dirs){
            q.push({r+p.first,c + p.second});
        }
    }

    if(vis.size() != n){
        cout << "NO" << endl;
        return 0;
    }
    cout << "YES\n";

    sort(arr.begin(),arr.end());

    for(int i = 0; i < n; i++){
        cout << ans[i]+1 << endl;
    }
}
#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...