Submission #446265

#TimeUsernameProblemLanguageResultExecution timeMemory
446265urd05Building Skyscrapers (CEOI19_skyscrapers)C++17
8 / 100
199 ms10184 KiB
#include <bits/stdc++.h>
using namespace std;

typedef pair<int,int> P;
map<P,int> mp;
map<P,bool> vis;

int main() {
    int n,t;
    scanf("%d %d",&n,&t);
    for(int i=0;i<n;i++) {
        int x,y;
        scanf("%d %d",&x,&y);
        mp[P(x,y)]=i;
    }
    P st=(*mp.begin()).first;
    vis[st]=true;
    deque<P> q;
    q.push_front(st);
    vector<int> ret;
    while (!q.empty()) {
        P now=q.front();
        ret.push_back(mp[now]);
        q.pop_front();
        int x=now.first;
        int y=now.second;
        if (mp.find(P(x,y-1))!=mp.end()&&!vis[P(x,y-1)]) {
            q.push_front(P(x,y-1));
            vis[P(x,y-1)]=true;
        }
        if (mp.find(P(x,y+1))!=mp.end()&&!vis[P(x,y+1)]) {
            q.push_front(P(x,y+1));
            vis[P(x,y+1)]=true;
        }
        for(int d=-1;d<=1;d++) {
            if (mp.find(P(x+1,y+d))!=mp.end()&&!vis[P(x+1,y+d)]) {
                q.push_back(P(x+1,y+d));
                vis[P(x+1,y+d)]=true;
            }
            if (mp.find(P(x-1,y+d))!=mp.end()&&!vis[P(x-1,y+d)]) {
                q.push_back(P(x-1,y+d));
                vis[P(x-1,y+d)]=true;
            }
        }
    }
    if (ret.size()!=n) {
        printf("NO");
    }
    else {
        printf("YES\n");
        for(int i=0;i<n;i++) {
            printf("%d\n",ret[i]+1);
        }
    }
}

Compilation message (stderr)

skyscrapers.cpp: In function 'int main()':
skyscrapers.cpp:46:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   46 |     if (ret.size()!=n) {
      |         ~~~~~~~~~~^~~
skyscrapers.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d",&n,&t);
      |     ~~~~~^~~~~~~~~~~~~~~
skyscrapers.cpp:13:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |         scanf("%d %d",&x,&y);
      |         ~~~~~^~~~~~~~~~~~~~~
#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...