Submission #276327

#TimeUsernameProblemLanguageResultExecution timeMemory
276327AKaan37Building Skyscrapers (CEOI19_skyscrapers)C++17
54 / 100
1778 ms98248 KiB
//Bismillahirrahmanirrahim //█▀█─█──█──█▀█─█─█ //█▄█─█──█──█▄█─█▄█ //█─█─█▄─█▄─█─█─█─█ #include <bits/stdc++.h> using namespace std; typedef long long lo; typedef pair< lo,lo > PII; typedef pair< lo,PII > PIII; #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],bos[li]; int cev; PIII p[li]; 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){ set<PII> st; st.insert({a[node],b[node]}); while(st.size()){ auto it=st.begin(); PII pa=*it; int node=mpp[pa]; st.erase(it); if(vis[node])continue; vv.pb(node); vis[node]=1; for(int i=0;i<(int)v[node].size();i++){ int go=v[node][i].se; //~ if(st.find({bos[go],{-c[go],go}})!=st.end())st.erase({bos[go],{-c[go],go}}); bos[go]--; st.insert({a[go],b[go]}); } } } int main(void){ scanf("%d %d",&n,&t); FOR bos[i]=4; FOR fa[i]=i; FOR{ int x,y; scanf("%d %d",&a[i],&b[i]); x=a[i]; y=b[i]; cev=0; p[i].fi=x; p[i].se.fi=y; p[i].se.se=i; 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; sort(p+1,p+n+1); ind=p[1].se.se; 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:130:6: warning: unused variable 'mx' [-Wunused-variable]
  130 |  int mx=-1;
      |      ^~
skyscrapers.cpp:64:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   64 |  scanf("%d %d",&n,&t);
      |  ~~~~~^~~~~~~~~~~~~~~
skyscrapers.cpp:69:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   69 |   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...