Cod sursa(job #1976758)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 4 mai 2017 10:12:21
Problema Medie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
/**
    O(n^2) solution
**/
#include<bits/stdc++.h>
#define maxN 9005
#define MaxVal 7005
using namespace std;
int ap[2*MaxVal],v[maxN],n,f[MaxVal],dr[maxN],st[maxN];
long long sol;
int main()
{
    freopen("medie.in","r",stdin);
    freopen("medie.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        f[v[i]]++;
    }
    sort(v+1,v+n+1);
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            ap[v[i]+v[j]]++;
    dr[n]=0;
    for(int i=n-1;i>=1;i--)
        if(v[i]==v[i+1]) dr[i]=1+dr[i+1];
            else dr[i]=0;
    st[1]=0;
    for(int i=2;i<=n;i++)
        if(v[i]==v[i-1]) st[i]=1+st[i-1];
            else st[i]=0;
    for(int i=1;i<=n;i++)
    {
      //  sol=sol+1LL*ap[2*v[i]];
        long long x=ap[2*v[i]];
        if(f[v[i]]>=3) x-=(1LL*dr[i]+1LL*st[i]);
        if(x>=0) sol+=x;
      //  if(f[v[i]]>=3) sol-=(1LL*f[v[i]]-1LL);
    }
    printf("%lld\n",sol);
    return 0;
}