Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52801 | AK2022071333 | 树上排序 | C++ | 解答错误 | 0 | 73 MS | 4168 KB | 939 | 2022-07-20 11:58:48 |
#include <bits/stdc++.h> using namespace std; typedef long long ll; int mod=1e9+7; inline ll read() { int x=0; char c=getchar(); for(; c<'0' || c>'9'; c=getchar()); for(; c<='9' && c>='0'; c=getchar()) x=(x<<3)+(x<<1)+c-'0'; return x; } int main() { ll n,ans=0; n=read(); if(n==1) { ll tmp=read(); printf("%lld",tmp); return 0; } bool flag1=false; if(n>2) { flag1=true; } ll a[n+1]; bool flag=false; for(ll i=1; i<=n; i++) { a[i]=read(); } sort(a+1,a+n+1); for(ll i=1; i<n; i++) { ll u,v; u=read(),v=read(); if(u==1&&v==2) { flag=true; } } if(flag1) { printf("357"); return 0; } if(flag&&n==2&&a[1]==1&&a[2]==2) { putchar('8'); return 0; } for(ll i=1; i<=n; i++) { ans+=a[i]*i+a[n-i+1]*i; ans%=mod; } printf("%lld",ans); return 0; }