Cod sursa(job #1923795)

Utilizator bleo16783FMI Bleotiu Cristian bleo16783 Data 12 martie 2017 10:01:58
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include<fstream>
#include<algorithm>
using namespace std;
#define N 900
int v[N],i,j,k,n;
long long sol;
inline int bs(int val,int x,int y)
{
    if(v[x]>val)return x;
    int ls=x,ld=y,m=(ls+ld)/2;
    while(ls<=ld)
    {
        if(v[m]<=val && v[m+1]>val)return m;
        else
        {
            if(v[m]>val)
            {
                ld=m-1;
                m=(ls+ld)/2;
            }
            else
            {
                ls=m+1;
                m=(ls+ld)/2;
            }
        }
    }
}
inline bool cmp(int a,int b)
{
    return(a<b);
}
int main()
{
    ifstream f("nrtri.in");
    f>>n;
    for(i=1;i<=n;++i)
        f>>v[i];
    sort(v+1,v+1+n,cmp);
    v[n+1]=90000;
    for(i=1;i<n;++i)
        for(j=i+1;j<n;++j)
        {
            k=bs(v[i]+v[j],j,n);
            sol+=k-j;
        }
    ofstream g("nrtri.out");
    g<<sol;
    return 0;
}