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