Submission #68586130


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
struct node{
	int id,d;
}a[100005];
map<int,int> pos;
bool cmp(node x,node y){
	return x.d>y.d;
}
vector<int> V[100005];
int f[100005],sz[100005];
int fd(int x){
	if(x==f[x]) return x;
	return f[x]=fd(f[x]);
}
void link(int u,int v){
	V[u].push_back(v);
	V[v].push_back(u);
	u=fd(u),v=fd(v);
	if(u==v) return;
	f[u]=v;
	sz[v]+=sz[u];
}
void dfs(int u,int fa){
	sz[u]=sz[fa]+1;
	for(int v:V[u]){
		if(v==fa) continue;
		dfs(v,u);
	} 
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		int d;cin>>d;
		a[i]={i,d};
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		f[i]=i,sz[i]=1;
		pos[a[i].d]=i;
	}
	for(int i=1;i<n;i++){
		int dy=a[i].d;
		int s=sz[fd(a[i].id)];
		int dx=dy-n+2*s;
		if(!pos.count(dx)||pos[dx]<=i){
			cout<<-1<<"\n";
			return 0;
		}
//		cout<<a[i].id<<' '<<a[pos[dx]].id<<"\n";
		link(a[i].id,a[pos[dx]].id);
	}
	dfs(a[n].id,0);
	int t=0;
	for(int i=1;i<=n;i++) t+=sz[i];
	if(t-n!=a[n].d){
		cout<<-1<<"\n";
		return 0;
	}
	for(int i=1;i<=n;i++){
		for(int j:V[i]){
			if(j>i) cout<<i<<" "<<j<<"\n";
		}
	}
}

Submission Info

Submission Time
Task F - Distance Sums
User george0929
Language C++ 20 (gcc 12.2)
Score 900
Code Size 1229 Byte
Status AC
Exec Time 79 ms
Memory 19704 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 900 / 900
Status
AC × 3
AC × 48
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 3.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 4.txt, 40.txt, 41.txt, 42.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
1.txt AC 2 ms 3672 KiB
10.txt AC 76 ms 19576 KiB
11.txt AC 47 ms 16968 KiB
12.txt AC 35 ms 15676 KiB
13.txt AC 56 ms 17540 KiB
14.txt AC 77 ms 19624 KiB
15.txt AC 76 ms 19488 KiB
16.txt AC 78 ms 19348 KiB
17.txt AC 78 ms 19336 KiB
18.txt AC 39 ms 15952 KiB
19.txt AC 79 ms 19508 KiB
2.txt AC 2 ms 3748 KiB
20.txt AC 77 ms 19560 KiB
21.txt AC 31 ms 14092 KiB
22.txt AC 76 ms 19420 KiB
23.txt AC 76 ms 19452 KiB
24.txt AC 67 ms 18024 KiB
25.txt AC 35 ms 15448 KiB
26.txt AC 37 ms 15360 KiB
27.txt AC 36 ms 15568 KiB
28.txt AC 32 ms 14592 KiB
29.txt AC 78 ms 19468 KiB
3.txt AC 7 ms 5128 KiB
30.txt AC 77 ms 19588 KiB
31.txt AC 78 ms 19152 KiB
32.txt AC 78 ms 19324 KiB
33.txt AC 67 ms 19228 KiB
34.txt AC 79 ms 19496 KiB
35.txt AC 66 ms 19464 KiB
36.txt AC 67 ms 19624 KiB
37.txt AC 76 ms 19368 KiB
38.txt AC 77 ms 19416 KiB
39.txt AC 78 ms 19484 KiB
4.txt AC 5 ms 4768 KiB
40.txt AC 76 ms 19368 KiB
41.txt AC 77 ms 19132 KiB
42.txt AC 62 ms 16324 KiB
5.txt AC 36 ms 11572 KiB
6.txt AC 78 ms 19588 KiB
7.txt AC 77 ms 19560 KiB
8.txt AC 77 ms 19636 KiB
9.txt AC 77 ms 19704 KiB
sample1.txt AC 2 ms 3508 KiB
sample2.txt AC 1 ms 3488 KiB
sample3.txt AC 1 ms 3452 KiB