Cod sursa(job #644643)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 decembrie 2011 11:17:49
Problema Medie Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
#include<cstdlib>
#define N 9001
#define X 7001
int n,s,a[N],r[X],v[X],i,j;

int qp(int s,int d)
{int x=a[s];
while(s<d)
     {while(s<d&&a[d]>=x) 
             d--;
     a[s]=a[d];
     while(s<d&&a[s]<=x) 
             s++;
     a[d]=a[s];}
a[s]=x;
return s;}

void qs(int s,int d)
{int r,m,x;
srand(0);
r=rand()%(d-s+1)+s;
if(r!=s) 
      x=a[r],a[r]=a[s],a[s]=x;
m=qp(s,d);
if(s<m) 
      qs(s,m-1);
if(m<d) 
      qs(m+1,d);}

int main()
{FILE *f=fopen("medie.in","r"),*g=fopen("medie.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
     fscanf(f,"%d",&a[i]),r[a[i]]++;
qs(1,n);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if((a[i]+a[j])%2==0)
     ++v[(a[i]+a[j])/2];
for(i=1;i<=n;i++)
if(v[a[i]])
     s+=v[a[i]]-r[a[i]]+1;
fprintf(g,"%d",s);
return 0;}