Cod sursa(job #674390)

Utilizator anca1243Popescu Anca anca1243 Data 6 februarie 2012 09:25:17
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("nrtri.in");
ofstream out("nrtri.out");
const int N=801;
int v[N],n;
int cautbin (int x)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
    {
        if(i+pas<=n && v[i+pas]<=x)
        {
            i+=pas;
        }
    }
    return i;
}


int main()
{
    int i,j,rez=0,k;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    sort(&v[1],&v[n+1]);
    for(i=1;i<n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            k=cautbin(v[i]+v[j]);
            if(k>j)
            {
                rez+=k-j;
                //out<<v[i]<<" "<<v[j]<<" -> "<<k-j<<"\n";
            }
        }
    }
    out<<rez;
    return 0;
}