Submission #276199

#TimeUsernameProblemLanguageResultExecution timeMemory
276199AKaan37Building Skyscrapers (CEOI19_skyscrapers)C++17
8 / 100
706 ms35192 KiB
//Bismillahirrahmanirrahim //█▀█─█──█──█▀█─█─█ //█▄█─█──█──█▄█─█▄█ //█─█─█▄─█▄─█─█─█─█ #include <bits/stdc++.h> using namespace std; typedef long long lo; typedef pair< lo,lo > PII; #define fi first #define se second #define mp make_pair #define endl "\n" #define pb push_back #define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define FOR for(int i=1;i<=n;i++) #define mid ((start+end)/2) #define ort ((bas+son)/2) const lo inf = 1000000000000000000; const lo KOK = 100000; const lo LOG = 30; const lo li = 200005; const lo mod = 1000000007; int n,m,b[li],a[li],k,flag,t,fa[li],vis[li],c[li]; int cev; string s; map<PII,int> mpp; vector<int> vv; vector<PII> v[li]; inline int dsu(int x){ if(x==fa[x])return x; return fa[x]=dsu(fa[x]); } inline void dfs(int node){ priority_queue<PII> pq; pq.push({c[node],node}); while(pq.size()){ int node=pq.top().se; pq.pop(); if(vis[node])continue; vv.pb(node); vis[node]=1; for(int i=0;i<(int)v[node].size();i++){ pq.push(v[node][i]); } } } int main(void){ scanf("%d %d",&n,&t); FOR fa[i]=i; FOR{ int x,y; scanf("%d %d",&a[i],&b[i]); x=a[i]; y=b[i]; cev=0; if(mpp[{x-1,y}]){ cev++; } if(mpp[{x+1,y}]){ cev++; } if(mpp[{x,y-1}]){ cev++; } if(mpp[{x,y+1}]){ cev++; } c[i]=cev; mpp[{x,y}]=i; } mpp.clear(); FOR{ int x,y; x=a[i]; y=b[i]; if(mpp[{x-1,y}]){ v[mpp[{x-1,y}]].pb({c[i],i}); v[i].pb({c[mpp[{x-1,y}]],mpp[{x-1,y}]}); } if(mpp[{x+1,y}]){ v[mpp[{x+1,y}]].pb({c[i],i}); v[i].pb({c[mpp[{x+1,y}]],mpp[{x+1,y}]}); } if(mpp[{x,y-1}]){ v[mpp[{x,y-1}]].pb({c[i],i}); v[i].pb({c[mpp[{x,y-1}]],mpp[{x,y-1}]}); } if(mpp[{x,y+1}]){ v[mpp[{x,y+1}]].pb({c[i],i}); v[i].pb({c[mpp[{x,y+1}]],mpp[{x,y+1}]}); } if(mpp[{x+1,y+1}]){ v[mpp[{x+1,y+1}]].pb({c[i],i}); v[i].pb({c[mpp[{x+1,y+1}]],mpp[{x+1,y+1}]}); } if(mpp[{x-1,y+1}]){ v[mpp[{x-1,y+1}]].pb({c[i],i}); v[i].pb({c[mpp[{x-1,y+1}]],mpp[{x-1,y+1}]}); } if(mpp[{x-1,y-1}]){ v[mpp[{x-1,y-1}]].pb({c[i],i}); v[i].pb({c[mpp[{x-1,y-1}]],mpp[{x-1,y-1}]}); } if(mpp[{x+1,y-1}]){ v[mpp[{x+1,y-1}]].pb({c[i],i}); v[i].pb({c[mpp[{x+1,y-1}]],mpp[{x+1,y-1}]}); } mpp[{x,y}]=i; } int mx=-1; int ind=0; FOR{ if((int)v[i].size()>mx){ind=i;mx=v[i].size();} } dfs(ind); FOR{ if(vis[i]==0){printf("NO\n");return 0;} } printf("YES\n"); for(int i=0;i<n;i++)printf("%d\n",vv[i]); return 0; }

Compilation message (stderr)

skyscrapers.cpp: In function 'int main()':
skyscrapers.cpp:57:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   57 |  scanf("%d %d",&n,&t);
      |  ~~~~~^~~~~~~~~~~~~~~
skyscrapers.cpp:61:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   61 |   scanf("%d %d",&a[i],&b[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...