Submission #260435

#TimeUsernameProblemLanguageResultExecution timeMemory
260435stefantagaBuilding Skyscrapers (CEOI19_skyscrapers)C++14
0 / 100
44 ms764 KiB
#include <bits/stdc++.h> using namespace std; int dl[]={1,1,1,0,0,-1,-1,-1}; int dc[]={-1,0,1,-1,1,1,-1,0}; int dl2[]={1,0,0,-1}; int dc2[]={0,1,-1,0}; int n,t,i,sol[150005],nr,fr[150005],j,k; pair <int,int> loc,b; queue <int> q; struct wow { int x,y; }v[150005]; int main() { #ifdef HOME ifstream cin("date.in"); ofstream cout("date.out"); #endif // HOME cin>>n; cin>>t; for (i=1;i<=n;i++) { cin>>v[i].x>>v[i].y; } if (t==1) { q.push(1); sol[++nr]=1; fr[1]=1; while (!q.empty()) { loc={v[q.front()].x,v[q.front()].y}; q.pop(); for (i=0;i<4;i++) { b.first=loc.first+dl2[i]; b.second=loc.second+dc2[i]; for (j=1;j<=n;j++) { if (b.first==v[j].x&&b.second==v[j].y&&fr[j]==0) { sol[++nr]=j; fr[j]=1; q.push(j); } } } } for (j=1;j<=n;j++) { if (fr[j]==0) { for (i=0;i<8;i++) { b.first=v[j].x+dl[i]; b.second=v[j].y+dc[i]; for (k=1;k<=n;k++) { if (b.first==v[k].x&&b.second==v[k].y&&fr[k]==0) { sol[++nr]=k; fr[k]=1; q.push(k); } } } } } while (!q.empty()) { loc={v[q.front()].x,v[q.front()].y}; q.pop(); for (i=0;i<8;i++) { b.first=loc.first+dl[i]; b.second=loc.second+dc[i]; for (j=1;j<=n;j++) { if (b.first==v[j].x&&b.second==v[j].y&&fr[j]==0) { sol[++nr]=j; fr[j]=1; q.push(j); } } } } for (i=1;i<=n;i++) { if (fr[i]==0) { cout<<"NO"; return 0; } } cout<<"YES"<<'\n'; for (i=1;i<=n;i++) { cout<<sol[i]<<'\n'; } } return 0; }
#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...