Submission #276199

# Submission time Handle Problem Language Result Execution time Memory
276199 2020-08-20T11:30:14 Z AKaan37 Building Skyscrapers (CEOI19_skyscrapers) C++17
8 / 100
706 ms 35192 KB
//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

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 time Memory Grader output
1 Correct 3 ms 4992 KB ans=YES N=1
2 Correct 3 ms 4992 KB ans=YES N=4
3 Correct 3 ms 4992 KB ans=NO N=4
4 Correct 3 ms 4992 KB ans=YES N=5
5 Correct 3 ms 4992 KB ans=YES N=9
6 Correct 4 ms 4992 KB ans=YES N=5
7 Correct 4 ms 4992 KB ans=NO N=9
8 Correct 5 ms 4992 KB ans=NO N=10
9 Correct 4 ms 4992 KB ans=YES N=10
10 Correct 4 ms 4992 KB ans=YES N=10
11 Correct 3 ms 4992 KB ans=YES N=10
12 Correct 4 ms 5120 KB ans=YES N=9
13 Correct 3 ms 4992 KB ans=YES N=9
14 Correct 4 ms 4992 KB ans=YES N=8
15 Correct 3 ms 4992 KB ans=YES N=8
16 Correct 4 ms 4992 KB ans=NO N=2
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4992 KB ans=YES N=1
2 Correct 3 ms 4992 KB ans=YES N=4
3 Correct 3 ms 4992 KB ans=NO N=4
4 Correct 3 ms 4992 KB ans=YES N=5
5 Correct 3 ms 4992 KB ans=YES N=9
6 Correct 4 ms 4992 KB ans=YES N=5
7 Correct 4 ms 4992 KB ans=NO N=9
8 Correct 5 ms 4992 KB ans=NO N=10
9 Correct 4 ms 4992 KB ans=YES N=10
10 Correct 4 ms 4992 KB ans=YES N=10
11 Correct 3 ms 4992 KB ans=YES N=10
12 Correct 4 ms 5120 KB ans=YES N=9
13 Correct 3 ms 4992 KB ans=YES N=9
14 Correct 4 ms 4992 KB ans=YES N=8
15 Correct 3 ms 4992 KB ans=YES N=8
16 Correct 4 ms 4992 KB ans=NO N=2
17 Incorrect 3 ms 4992 KB Added cell 17 (1,2) not reachable from infinity
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4992 KB ans=YES N=1
2 Correct 3 ms 4992 KB ans=YES N=4
3 Correct 3 ms 4992 KB ans=NO N=4
4 Correct 3 ms 4992 KB ans=YES N=5
5 Correct 3 ms 4992 KB ans=YES N=9
6 Correct 4 ms 4992 KB ans=YES N=5
7 Correct 4 ms 4992 KB ans=NO N=9
8 Correct 5 ms 4992 KB ans=NO N=10
9 Correct 4 ms 4992 KB ans=YES N=10
10 Correct 4 ms 4992 KB ans=YES N=10
11 Correct 3 ms 4992 KB ans=YES N=10
12 Correct 4 ms 5120 KB ans=YES N=9
13 Correct 3 ms 4992 KB ans=YES N=9
14 Correct 4 ms 4992 KB ans=YES N=8
15 Correct 3 ms 4992 KB ans=YES N=8
16 Correct 4 ms 4992 KB ans=NO N=2
17 Incorrect 3 ms 4992 KB Added cell 17 (1,2) not reachable from infinity
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 12 ms 6144 KB ans=NO N=1934
2 Correct 11 ms 5504 KB ans=NO N=1965
3 Incorrect 14 ms 5632 KB Added cell 1824 (355,227) not reachable from infinity
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4992 KB ans=YES N=1
2 Correct 3 ms 4992 KB ans=YES N=4
3 Correct 3 ms 4992 KB ans=NO N=4
4 Correct 3 ms 4992 KB ans=YES N=5
5 Correct 3 ms 4992 KB ans=YES N=9
6 Correct 4 ms 4992 KB ans=YES N=5
7 Correct 4 ms 4992 KB ans=NO N=9
8 Correct 5 ms 4992 KB ans=NO N=10
9 Correct 4 ms 4992 KB ans=YES N=10
10 Correct 4 ms 4992 KB ans=YES N=10
11 Correct 3 ms 4992 KB ans=YES N=10
12 Correct 4 ms 5120 KB ans=YES N=9
13 Correct 3 ms 4992 KB ans=YES N=9
14 Correct 4 ms 4992 KB ans=YES N=8
15 Correct 3 ms 4992 KB ans=YES N=8
16 Correct 4 ms 4992 KB ans=NO N=2
17 Incorrect 3 ms 4992 KB Added cell 17 (1,2) not reachable from infinity
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 603 ms 23904 KB ans=NO N=66151
2 Correct 548 ms 35192 KB ans=NO N=64333
3 Incorrect 706 ms 25508 KB Added cell 69316 (-46,-72) not reachable from infinity
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 12 ms 6144 KB ans=NO N=1934
2 Correct 11 ms 5504 KB ans=NO N=1965
3 Incorrect 14 ms 5632 KB Added cell 1824 (355,227) not reachable from infinity
4 Halted 0 ms 0 KB -