Submission #346383

#TimeUsernameProblemLanguageResultExecution timeMemory
346383dooweyBuilding Skyscrapers (CEOI19_skyscrapers)C++14
8 / 100
188 ms34532 KiB
#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);

int dir[8][2] = {{-1,-1},{-1,0},{-1,+1},{0,-1},{0,+1},{+1,-1},{+1,0},{+1,+1}};
map<pii,int> indx;
map<pii,int> active;
set<pii> nt;

vector<pii> fin;

void dfs(pii chk){
    active[chk]=true;
    fin.push_back(chk);
    pii nx;
    for(int dv = 0; dv < 8; dv ++ ){
        nx = mp(chk.fi + dir[dv][0], chk.se + dir[dv][1]);
        if(nt.count(nx)){
            nt.erase(nx);
            dfs(nx);
        }
    }
}

int main(){
    fastIO;
    int n;
    cin >> n;
    int ty;
    cin >> ty;
    int ii, jj;
    vector<pii> ord;

    for(int i = 1; i <= n; i ++) {
        cin >> ii >> jj;
        ord.push_back(mp(ii,jj));
        indx[mp(ii,jj)]=i;
    }
    sort(ord.begin(), ord.end());
    fin.push_back(ord[0]);
    active[ord[0]]=true;
    bool go;
    pii nx;
    for(int i = 1; i < ord.size(); i ++ ){
        go = false;
        for(int v = 0; v < 8; v ++ ){
            nx = mp(ord[i].fi+dir[v][0],ord[i].se+dir[v][1]);
            if(active[nx]) go = true;
        }
        if(go){
            dfs(ord[i]);
        }
        else{
            nt.insert(ord[i]);
        }
    }
    if(!nt.empty()){
        cout << "NO\n";
    }
    else{
        cout << "YES\n";
        for(auto x : fin){
            cout << indx[x] << " ";
        }
    }
    return 0;
}

Compilation message (stderr)

skyscrapers.cpp: In function 'int main()':
skyscrapers.cpp:52:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     for(int i = 1; i < ord.size(); i ++ ){
      |                    ~~^~~~~~~~~~~~
#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...