Pagini recente » Cod sursa (job #2706608) | Cod sursa (job #621438) | Borderou de evaluare (job #2015220) | Cod sursa (job #2346480) | Cod sursa (job #204267)
Cod sursa(job #204267)
/*medie*/
#include<fstream.h>
int id[7005],v[9005],n;
long cont;
ifstream fin("medie.in");
ofstream fout("medie.out");
void pivotare(int i,int j,int &m)
{
int pivot=v[i];
while(i<j)
{
while(j>i && v[j]>=pivot) j--;
v[i]=v[j];
while(i<j && v[i]<=pivot) i++;
v[j]=v[i];
}
v[i]=pivot;
m=i;
}
void quick_sort(int p,int q)
{
int m;
if(p<q)
{
pivotare(p,q,m);
quick_sort(p,m-1);
quick_sort(m+1,q);
}
}
long fact(int poz)
{
long f;
f=(poz-2)*(poz-1)*poz;
return f/2;
}
int cauta(int poz)
{
int i=poz,sv;
while(poz<n && v[poz]==v[poz-1])
poz++;
sv=poz;
poz=poz-i+1;
cont+=fact(poz);
return sv;
}
int main()
{
int i,j;
fin>>n;
for(i=0;i<n;i++)
{
fin>>v[i];
id[v[i]]=1;
}
quick_sort(0,n-1);
for(i=0;i<n-2;i++)
{
if(v[i]==v[i+1])
i=cauta(i+1);
for(j=i+1;j<n-1;j++)
{
if(id[2*v[j]-v[i]]==1)
cont++;
}
}
fout<<cont<<'\n';
fout.close();
return 0;
}