Cod sursa(job #2064782)

Utilizator biaiftimeIftime Bianca biaiftime Data 12 noiembrie 2017 19:59:47
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 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)return d;
    if(d==s+1)return d;
    if(s<d)
    {
        int m=s+(d-s)/2;
        if(a[m]>val)return CautareBinara(a,s,m,val);
        else return CautareBinara(a,m,d,val);
    }
}
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]);
        while(raspuns>j&&a[raspuns]>a[i]+a[j])--raspuns;
        if(a[i]+a[j]>=a[raspuns])nr=nr+raspuns-j;
    }
    fout<<nr;
    return 0;
}