Pagini recente » Cod sursa (job #1414996) | Diferente pentru problema/carpetbomber intre reviziile 2 si 1 | Diferente pentru blog/human-computation intre reviziile 14 si 4 | Diferente pentru treapuri intre reviziile 147 si 148 | Cod sursa (job #629009)
Cod sursa(job #629009)
# include <cstdio>
# include <algorithm>
using namespace std;
int n, st,dr,mij,i,j,a,b;
int lg[900];
int sol=1;
int main ()
{
freopen ("nrtri.in","r",stdin);
freopen ("nrtri.out","w",stdout);
scanf ("%d",&n);
for (i=1;i<=n;i++)
{
scanf ("%d",&lg[i]);
}
sort(lg+1,lg+n+1);
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
{
//maximul
a=lg[i]+lg[j];
st=j+1; dr=n;
while (st<dr)
{
mij=st+(dr-st)/2;
if (lg[mij]>a)
dr=mij-1;
else st=mij;
}
if (st==dr)
{
a=dr;
}
else a=-1;
b=lg[j]-lg[i];
st=j+1; dr=n;
while (st<dr)
{
mij=st+(dr-st)/2;
if (lg[mij]<b)
st=mij+1;
else dr=mij;
}
if (st==dr)
{
b=dr;
}
else b=-1;
if (a!=-1&&b!=-1)
{
sol+=(a-b+1);
}
}
printf("%d\n",sol);
return 0;
}