Pagini recente » Cod sursa (job #459054) | Cod sursa (job #798370) | Cod sursa (job #13110) | Cod sursa (job #728915) | Cod sursa (job #2496626)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("nrtri.in");
ofstream fout ("nrtri.out");
int freq[30001], v[800];
int main()
{
int i,j,n,nr,mj,dr,st,maxx=0,pos=0;
fin >> n;
for(i=0;i<n;i++)
{
fin >> v[i];
freq[v[i]]++;
if(v[i]>maxx)
maxx=v[i];
}
j=0;
for(i=1;i<=maxx;i++)
{
if(freq[i]>0)
{
while(freq[i]>0)
{
v[j]=freq[i];
j++;
freq[i]--;
}
}
}
mj=2;
for(i=0;i<n;i++)
{
if(i>0)
pos+=(mj-j)*(mj+1-j)/2;
for(j=i+1;j<n;j++)
{
nr=v[i]+v[j];
st=mj;
dr=n;
mj=(st+dr)/2;
while(v[mj]!=nr && st!=dr)
{
if(nr>v[mj])
{
st=mj;
mj=(dr+st)/2;
}
else
{
if(nr<v[mj])
{
dr=mj;
mj=(dr+st)/2;
}
}
}
pos+=(mj-j)*(mj+1-j)/2;
}
}
fout << pos;
}