Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <list>
- #include <map>
- #include <set>
- #include <deque>
- #include <stack>
- #include <queue>
- #include <algorithm>
- #include <sstream>
- #include <iostream>
- #include <iomanip>
- #include <cstdio>
- #include <cmath>
- #include <cstdlib>
- #include <memory.h>
- #include <ctime>
- #include <bitset>
- using namespace std;
- #define ABS(a) ((a>0)?a:-(a))
- #define MIN(a,b) ((a<b)?(a):(b))
- #define MAX(a,b) ((a<b)?(b):(a))
- #define FOR(i,a,n) for (int i=(a);i<(n);++i)
- #define MEMS(a,b) memset((a),(b),sizeof(a))
- #define FI(i,n) for (int i=0; i<(n); ++i)
- #define pnt pair <int, int>
- #define mp make_pair
- #define LL long long
- #define U unsigned
- LL tot[8000010];
- int sq[1000010];
- int a[4010];
- int cnt[1000010];
- vector<int> b;
- int main()
- {
- #ifdef Fcdkbear
- freopen("in.txt", "r", stdin);
- //freopen("out.txt", "w", stdout);
- double beg = clock();
- #endif
- int n;
- scanf("%d",&n);
- FOR(i,0,n) {
- scanf("%d",&a[i]);
- b.push_back(a[i]);
- cnt[a[i]]++;
- }
- sort(b.begin(),b.end());
- b.resize(unique(b.begin(),b.end()) - b.begin());
- int idx = 0;
- FOR(i,0,n) {
- FOR(j,i+1,n) {
- LL v = a[i]*1ll*a[j];
- tot[idx++] = v;
- if (a[i] == a[j])
- sq[a[i]]++;
- }
- }
- sort(tot,tot+idx);
- LL res = 0;
- int c = 1;
- FOR(i,1,idx) {
- if (tot[i] == tot[i-1])
- c++;
- else {
- res += c*1ll*c;
- c = 1;
- }
- }
- res += c*1ll*c;
- FOR(i,0,n) {
- FOR(j,i+1,n) {
- if (a[i] == a[j]) {
- res -= sq[a[i]];
- } else {
- res -= cnt[a[i]]*1ll*cnt[a[j]];
- }
- }
- }
- res /= 2;
- FOR(i,0,b.size()) {
- if (cnt[b[i]] >= 4) {
- LL now = cnt[b[i]] *1ll*(cnt[b[i]] - 1);
- now *= (cnt[b[i]] - 2);
- now *= (cnt[b[i]] - 3);
- now /= 24;
- res += now;
- }
- }
- FOR(i,0,b.size()) {
- FOR(j,i+1,b.size()) {
- LL now = cnt[b[i]] *1ll*(cnt[b[i]] - 1);
- now *= cnt[b[j]];
- now *= (cnt[b[j]] - 1);
- now /= 4;
- res += now;
- }
- }
- cout<<res<<endl;
- #ifdef Fcdkbear
- double end = clock();
- fprintf(stderr, "*** Total time = %.3lf ***\n", (end - beg) / CLOCKS_PER_SEC);
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement