Pagini recente » Cod sursa (job #2329321) | Cod sursa (job #2273860) | Cod sursa (job #2585009) | Cod sursa (job #886700) | Cod sursa (job #1513407)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int v[32500];
int a;
int b;
int m;
int aux;
int nr;
int cautare_binara(int st,int dr,int x)
{
if(st>dr)
{
return -1;
}
else
{
m=st+(dr-st)/2;
if(v[m]>x)
{
return cautare_binara(st,m-1,x);
}
else
{
if(m==dr)
{
return dr;
}
else
{
if(v[m+1]>x)
{
return m;
}
else
{
return cautare_binara(m+1,dr,x);
}
}
}
}
}
int main()
{
int i,j;
int k=-1;
int n;
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i];
}
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
}
}
/* for(i=0;i<=n-1;i++)
{
c[v[i]]=c[v[i]]+1 ;
}
for(i=1;i<=k;i++)
{
c[i]=c[i]+c[i-1] ;
}
for(i=0;i<=n-1;i++)
{
u[c[v[i]]-1]=v[i];
c[v[i]]=c[v[i]]-1;
} */
for(i=1;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
m=cautare_binara(j+1,n,v[i]+v[j]);
if(m!=-1)
nr=nr+m-j;
}
}
g<<nr;
return 0;
}