Cod sursa(job #1801973)

Utilizator Stefan352000Corneteanu Stefan Stefan352000 Data 9 noiembrie 2016 19:04:02
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int n,x[802],i,j,k,mij,dr,st,C,a;
int main()
{
    fin>>n;
    for (i=1;i<=n;i++)
    {
        fin>>x[i];
    }
    C=0;
    sort (x+1,x+n+1);
    for (i=1;i<=n-2;i++)
    {
        for (j=i+1;j<=n-1;j++)
        {
            a=x[i]+x[j];
            //caut cel mai mare x[k] k e(j+1;n) a.i.a>k
            st=j+1;
            dr=n;
            k=-1;
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (a>=x[mij])
                {
                    k=mij;
                    st=mij+1;
                }
                else
                {
                    dr=mij-1;
                }
            }
            if (k>0)
                C+=k-j;
        }
    }
    fout<<C;
    return 0;
}