Submission #3883400
Source Code Expand
#include <stdio.h>
#include <algorithm>
#include <assert.h>
#include <bitset>
#include <cmath>
#include <complex>
#include <deque>
#include <functional>
#include <iostream>
#include <limits.h>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <time.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#pragma warning(disable:4996)
#pragma comment(linker, "/STACK:336777216")
using namespace std;
#define mp make_pair
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define szz(x) ((int)(x).size())
#define rep(i, n) for(int i=0;i<n;i++)
#define all(x) (x).begin(), (x).end()
#define ldb ldouble
typedef unsigned int uint;
typedef tuple<int, int, int> t3;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair <ll, int> pli;
typedef pair <db, db> pdd;
int IT_MAX = 1 << 19;
const ll MOD = 1000000007;
const int INF = 0x3f3f3f3f;
const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
const db PI = acos(-1);
const db ERR = 1e-10;
const int MX = 1<<19;
const int MM = 998244353;
map<ll, int> DB;
int P[MX], ad[MX], cnt[MX];
ll D[MX], E[MX];
int N;
vector<int> T[MX];
ll dfs(int x, int p, int lev = 0){
ll tot = 0;
for(int c : T[x]){
tot += dfs(c, x, lev+1);
}
return tot + lev;
}
int main()
{
scanf("%d", &N);
for(int i = 1; i <= N; i++){
scanf("%lld", D+i);
DB[D[i]] = i;
}
for(int i = 1; i <= N; i++) ad[i] = i;
sort(ad+1, ad+N+1, [](int l, int r){
return D[l] > D[r];
});
for(int i = 1; i <= N; i++) cnt[i] = 1;
for(int i = 1; i < N; i++){
int c = ad[i];
ll v = D[c] - (N - cnt[c]*2);
if(DB.find(v) == DB.end()) return !printf("-1\n");
P[c] = DB[v];
cnt[P[c]] += cnt[c];
T[P[c]].push_back(c);
}
int r = ad[N];
if(D[r] != dfs(r, -1)) return !printf("-1\n");
for(int i = 1; i <= N; i++){
for(int c : T[i]) printf("%d %d\n", i, c);
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Distance Sums |
| User | zigui |
| Language | C++14 (GCC 5.4.1) |
| Score | 900 |
| Code Size | 2156 Byte |
| Status | AC |
| Exec Time | 125 ms |
| Memory | 36352 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:74:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &N);
^
./Main.cpp:76:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld", D+i);
^
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 900 / 900 | ||||
| Status |
|
|
| 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 | 10 ms | 22912 KiB |
| 10.txt | AC | 118 ms | 36224 KiB |
| 11.txt | AC | 85 ms | 30720 KiB |
| 12.txt | AC | 73 ms | 29440 KiB |
| 13.txt | AC | 89 ms | 31360 KiB |
| 14.txt | AC | 114 ms | 36352 KiB |
| 15.txt | AC | 118 ms | 36224 KiB |
| 16.txt | AC | 112 ms | 35840 KiB |
| 17.txt | AC | 114 ms | 35840 KiB |
| 18.txt | AC | 76 ms | 29824 KiB |
| 19.txt | AC | 116 ms | 36352 KiB |
| 2.txt | AC | 9 ms | 22784 KiB |
| 20.txt | AC | 115 ms | 36352 KiB |
| 21.txt | AC | 63 ms | 28544 KiB |
| 22.txt | AC | 114 ms | 36224 KiB |
| 23.txt | AC | 112 ms | 35968 KiB |
| 24.txt | AC | 102 ms | 34944 KiB |
| 25.txt | AC | 73 ms | 29312 KiB |
| 26.txt | AC | 76 ms | 29440 KiB |
| 27.txt | AC | 76 ms | 29312 KiB |
| 28.txt | AC | 70 ms | 29056 KiB |
| 29.txt | AC | 119 ms | 35712 KiB |
| 3.txt | AC | 17 ms | 24064 KiB |
| 30.txt | AC | 117 ms | 36096 KiB |
| 31.txt | AC | 115 ms | 35200 KiB |
| 32.txt | AC | 114 ms | 35712 KiB |
| 33.txt | AC | 98 ms | 34304 KiB |
| 34.txt | AC | 114 ms | 36096 KiB |
| 35.txt | AC | 102 ms | 34816 KiB |
| 36.txt | AC | 101 ms | 35200 KiB |
| 37.txt | AC | 118 ms | 35968 KiB |
| 38.txt | AC | 113 ms | 35968 KiB |
| 39.txt | AC | 113 ms | 36224 KiB |
| 4.txt | AC | 14 ms | 23552 KiB |
| 40.txt | AC | 112 ms | 35840 KiB |
| 41.txt | AC | 112 ms | 35200 KiB |
| 42.txt | AC | 91 ms | 33280 KiB |
| 5.txt | AC | 56 ms | 29568 KiB |
| 6.txt | AC | 113 ms | 36352 KiB |
| 7.txt | AC | 114 ms | 36352 KiB |
| 8.txt | AC | 116 ms | 36352 KiB |
| 9.txt | AC | 125 ms | 36352 KiB |
| sample1.txt | AC | 9 ms | 22784 KiB |
| sample2.txt | AC | 9 ms | 22784 KiB |
| sample3.txt | AC | 9 ms | 22784 KiB |