Cod sursa(job #1357992)

Utilizator papinubPapa Victor papinub Data 24 februarie 2015 11:56:00
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
# include <fstream>
# include <algorithm>
# define DIM 810
using namespace std;
ifstream in("nrtri.in");
ofstream out("nrtri.out");
int v[DIM],i,j,n,poz1,poz2,nr;
int caut(int x)
{
    int p,u,mij;
    p=poz2+1; u=n;
    while (p<u)
    {
        mij=(p+u)/2;
        if (v[mij]==x)
        {
            p=mij;
            break;
        }
        if (v[mij]>x) u=mij;
        else p=mij+1;
    }
    if (v[p]==x && p!=poz1 && p!=poz2) return 1;
    return 0;
}
void definitie(int a,int b)
{
    int c,ok;
    for (c=1;c<=a+b;c++)
    {
        if (a+b>=c && a+c>=b && b+c>=a)
        {
            //out<<a<<' '<<b<<' '<<c<<'\n';
            ok=caut(c);
            if (ok) //out<<a<<' '<<b<<' '<<c<<'\n';
            nr++;
        }
    }
}
int main()
{
    in>>n;
    for (i=1;i<=n;i++) in>>v[i];
    sort(v+1,v+n+1);
    for (i=1;i<=n-2;i++)
    {
        for (j=i+1;j<=n-1;j++)
        {
            poz1=i;
            poz2=j;
            definitie(v[i],v[j]);
        }
    }
    out<<nr;
    return 0;
}