Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_DISABLE_PERFCRIT_LOCKS
- #pragma comment(linker, "/STACK:16777216")
- #include <cctype>
- #include <vector>
- #include <map>
- #include <set>
- #include <complex>
- #include <ctime>
- #include <iostream>
- #include <fstream>
- #include <time.h>
- #include <cmath>
- #include <stack>
- #include <stdio.h>
- #include <list>
- #include <algorithm>
- #include <unordered_map>
- #include <queue>
- #include <unordered_set>
- #include <random>
- const long double PI(acos(-1.0));
- #define pb push_back
- #define mp(a,b) make_pair(a,b)
- #define all(x) x.begin(), x.end()
- #define sqr(x) ((x)*(x))
- #define F first
- #define S second
- #define eps 1e-14
- #define inf (int)(1e9+7)
- #define infll (ll)(1e18+3)
- #define sz(x) ((int)x.size())
- #define bits(x) __builtin_popcount(x)
- #define bitsl(x) __builtin_popcountll(x)
- using namespace std;
- typedef unsigned long long ull;
- typedef long long ll;
- typedef long double ld;
- typedef vector < ll > vll;
- typedef vector<int> vi;
- typedef pair < ll, ll > pll;
- typedef pair < int, int > pii;
- typedef vector<vi> vii;
- typedef int huint;
- const int N = 5050;
- ll sums[N];
- ll prs[N<<1];
- ll smtr[N<<1];
- ll allprs = 0;
- int main() {
- #ifndef LOCAL_COMP
- // freopen("evacuate.in", "r", stdin);
- // freopen("evacuate.out", "w", stdout);
- #else
- freopen("/Users/nikita/Desktop/acm/acm/input.txt", "r", stdin);
- //freopen("/Users/nikita/Desktop/acm/acm/output.txt", "w", stdout);
- #endif
- cout.precision(10);
- int n; cin >> n;
- allprs = n*(n-1)/2;
- vi a(n);
- for (int i = 0; i<n; ++i)
- cin >> a[i];
- for (int i = 0; i<n; ++i)
- for (int j = i+1; j<n; ++j)
- sums[abs(a[i]-a[j])]++;
- for (int i = 0; i<N-20; ++i) {
- for (int j = i; j<N-20; ++j) {
- prs[i+j] += sums[i] * sums[j];
- }
- }
- for (int i = (N<<1)-20; i>=0; --i)
- smtr[i] = sums[i] + smtr[i+1];
- ld ans = 0;
- for (int i = 1; i<N-20; ++i) {
- if (!sums[i] || !smtr[i+1] || !prs[i]) continue;
- ld verchspr = (prs[i] + .0) / (allprs + .0);
- verchspr /= (allprs + .0);
- verchspr *= (smtr[i+1] + .0);
- verchspr /= (allprs + .0);
- ans += verchspr;
- }
- cout << fixed << ans / allprs;
- #ifdef LOCAL_COMP
- cerr << "\n == TIME : " << clock() / ld(CLOCKS_PER_SEC) << " == " << endl;
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement