Cod sursa(job #2062156)

Utilizator biaiftimeIftime Bianca biaiftime Data 10 noiembrie 2017 00:46:16
Problema Numarare triunghiuri Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <algorithm>
#define Nmax 802
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int a[Nmax],n;
void Read(int a[Nmax],int &n)
{
    int i;
    fin>>n;
    for(i=1;i<=n;i++)
    fin>>a[i];
}
int CautareBinara(int a[Nmax],int s,int d,int val)
{
    if(s<d)
    {
        int m=s+(d-s)/2;
        if(a[m]==val)return m;
        else if(a[m]>val) return CautareBinara(a,s,m-1,val);
        else return CautareBinara(a,m+1,d,val);
    }
    return d;
}
int main()
{
    Read(a,n);
    sort(a+1,a+n+1);
    int i,j,raspuns,nr=0;
    for(i=1;i<=n-2;++i)
    for(j=i+1;j<=n-1;++j)
    {
        raspuns=CautareBinara(a,j+1,n,a[i]+a[j]);
        if(a[raspuns]>a[i]+a[j])raspuns--;
        if(raspuns-j>0)nr=nr+raspuns-j;
    }
    fout<<nr;
    return 0;
}