Cod sursa(job #188818)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 10 mai 2008 01:10:19
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
long nrtri,i,j,k,n,v[801],suma;
long tz;
void cauta(int st,int dr)
           {
           long mij;
           if(st>dr) return;
           mij=(st+dr)/2;             
           if(v[mij]<=suma&&mij>tz) tz=mij;
           if(v[mij]>suma) cauta(st,mij-1);
           else if (v[mij]<=suma) cauta(mij+1,dr);
           }
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%li",&n);
for(i=1;i<=n;i++)
                 scanf("%li",&v[i]);
sort(v+1,v+(n+1));
for(i=1;i<n-1;i++)
           for(j=i+1;j<n;j++)
                     {
                     suma=v[i]+v[j];
                     tz=0;
                     cauta(j+1,n);
                     //printf("%li----%li------%li\n",suma,j+1,tz);
                     if(tz!=0)
                              nrtri+=tz-j;   
                     }
printf("%li\n",nrtri);
return 0;
}