Cod sursa(job #886561)

Utilizator lily3Moldovan Liliana lily3 Data 22 februarie 2013 23:35:07
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
#include<algorithm>
using namespace std;

int i,j,n,m,a[1001],k,nr=0;
bool cmp(int a,int b)
{
    return a<b;
}
int cauta(int i,int j)
{
    int mij,st=j+1,dr=n;
    mij=(st+dr)/2;
    while(st<=dr)
    {
        if(a[i]+a[j]>=a[mij]&&a[i]+a[mij]>=a[j]&&a[mij]+a[j]>=a[i])
        return 1;
        else
        if(a[i]+a[j]<a[mij])
        st=mij+1,mij=(st+dr)/2;
        else
        dr=mij-1,mij=(st+dr)/2;
    }
    return 0;
}
int main()
{
    ifstream f("nrtri.in");
    ofstream g("nrtri.out");
    f>>n;
    for(i=1;i<=n;++i)
    f>>a[i];
    sort(a+1,a+n+1,cmp);
    for(i=1;i<=n-2;++i)
    for(j=i+1;j<n;++j)
    {
        if(cauta(i,j))
        ++nr;
    }
    g<<nr<<"\n";
    return 0;
}