Submission #18941962
Source Code Expand
/*
after dusk passed,
there is a starry sky.
*/
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define m_k make_pair
#define int long long
using namespace std;
const int N=1e5+100;
int n,sz[N],d[N],de[N];
unordered_map <int,int> mp;
vector <pair<int,int> > ans;
vector <int> e[N];
bool bl;
struct node
{
int d,id;
}sh[N];
bool cmp(node a,node b){return a.d<b.d;}
inline int read()
{
int f=1,x=0;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
return x*f;
}
void dfs(int x)
{
d[x]=de[x];
for (int i=0;i<(int)e[x].size();i++)
{
int u=e[x][i];
de[u]=de[x]+1;
dfs(u);
d[x]+=d[u];
}
}
void dfs1(int x)
{
for (int i=0;i<(int)e[x].size();i++)
{
int u=e[x][i];
d[u]=d[x]-sz[u]+n-sz[u];
dfs1(u);
}
}
signed main()
{
n=read();
for (int i=1;i<=n;i++) sh[i]=(node){read(),i};
sort(sh+1,sh+1+n,cmp);
for (int i=1;i<=n;i++) mp[sh[i].d]=i,sz[i]=1;
for (int i=n;i>=2;i--)
{
int aim=sh[i].d-(n-2ll*sz[i]);
if (aim>=sh[i].d||!mp.count(aim))
{
printf("-1\n");
return 0;
}
sz[mp[aim]]+=sz[i];
e[mp[aim]].push_back(i);
ans.push_back(m_k(sh[mp[aim]].id,sh[i].id));
}
dfs(1);dfs1(1);
for (int i=1;i<=n;i++)
{
if (sh[i].d!=d[i])
{
printf("-1\n");
return 0;
}
}
for (int i=0;i<(int)ans.size();i++) printf("%lld %lld\n",ans[i].first,ans[i].second);
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Distance Sums |
| User | SevenDawns |
| Language | C++ (GCC 9.2.1) |
| Score | 900 |
| Code Size | 1438 Byte |
| Status | AC |
| Exec Time | 86 ms |
| Memory | 21264 KiB |
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 | 8 ms | 6112 KiB |
| 10.txt | AC | 83 ms | 21164 KiB |
| 11.txt | AC | 52 ms | 14232 KiB |
| 12.txt | AC | 43 ms | 12540 KiB |
| 13.txt | AC | 57 ms | 15988 KiB |
| 14.txt | AC | 79 ms | 21204 KiB |
| 15.txt | AC | 81 ms | 21160 KiB |
| 16.txt | AC | 80 ms | 20672 KiB |
| 17.txt | AC | 85 ms | 20528 KiB |
| 18.txt | AC | 45 ms | 13068 KiB |
| 19.txt | AC | 83 ms | 21060 KiB |
| 2.txt | AC | 10 ms | 5876 KiB |
| 20.txt | AC | 79 ms | 21160 KiB |
| 21.txt | AC | 39 ms | 11768 KiB |
| 22.txt | AC | 79 ms | 20812 KiB |
| 23.txt | AC | 86 ms | 20780 KiB |
| 24.txt | AC | 74 ms | 19720 KiB |
| 25.txt | AC | 44 ms | 12448 KiB |
| 26.txt | AC | 45 ms | 13004 KiB |
| 27.txt | AC | 45 ms | 12272 KiB |
| 28.txt | AC | 44 ms | 12012 KiB |
| 29.txt | AC | 83 ms | 20788 KiB |
| 3.txt | AC | 16 ms | 7540 KiB |
| 30.txt | AC | 82 ms | 21000 KiB |
| 31.txt | AC | 82 ms | 20064 KiB |
| 32.txt | AC | 81 ms | 20596 KiB |
| 33.txt | AC | 72 ms | 20332 KiB |
| 34.txt | AC | 83 ms | 20856 KiB |
| 35.txt | AC | 70 ms | 20972 KiB |
| 36.txt | AC | 66 ms | 21264 KiB |
| 37.txt | AC | 83 ms | 20784 KiB |
| 38.txt | AC | 82 ms | 20796 KiB |
| 39.txt | AC | 79 ms | 21044 KiB |
| 4.txt | AC | 15 ms | 6796 KiB |
| 40.txt | AC | 80 ms | 20532 KiB |
| 41.txt | AC | 82 ms | 20148 KiB |
| 42.txt | AC | 69 ms | 18044 KiB |
| 5.txt | AC | 44 ms | 13328 KiB |
| 6.txt | AC | 81 ms | 21236 KiB |
| 7.txt | AC | 78 ms | 21044 KiB |
| 8.txt | AC | 82 ms | 21164 KiB |
| 9.txt | AC | 78 ms | 21052 KiB |
| sample1.txt | AC | 7 ms | 5988 KiB |
| sample2.txt | AC | 5 ms | 5988 KiB |
| sample3.txt | AC | 5 ms | 6056 KiB |