Cod sursa(job #1131266)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 28 februarie 2014 18:58:35
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int n,nrposib=0,v[805],i,j;
int cautare(int val)
{
    int st=1,dr,mij;
    dr=n;
    mij=(st+dr)>>1;
    while(st<=dr)
    {
    if((v[mij]<=val&&v[mij+1]>val)||(v[mij]<=val&&mij==n)) return mij;
    else if(v[mij]<=val&&v[mij+1]<=val) st=mij+1;
    else dr=mij-1;
    mij=(st+dr)>>1;
    }
    return 0;
}
int main()
{

    f>>n;

    for(i=1;i<=n;i++) f>>v[i];
    sort(v+1,v+n+1);
    for(i=1;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
            nrposib+=cautare(v[i]+v[j])-j;
    }
    g<<nrposib;
    f.close();
    g.close();
}