Cod sursa(job #1576540)

Utilizator Mihai9Oniga Mihai Mihai9 Data 22 ianuarie 2016 15:51:55
Problema Lista lui Andrei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int v[801];
int c_bin(int first, int last, int s)
{
    int mijloc,poz,prim=first;
    mijloc=(first+last)/2;
    while(first<=last)
    {
        if(v[mijloc]<=s)
        {
            first=mijloc+1;
            poz=mijloc;
            mijloc=(first+last)/2;
        }
        else
        {
            last=mijloc-1;
            mijloc=(first+last)/2;
        }
    }
    if(prim==first){return 0;}
    return poz-prim+1;
}
int main()
{
    int n,c=0,s;
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }
    sort(v+1,v+n+1);
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++)
        {
            s=v[i]+v[j];
            c+=c_bin(j+1,n,s);
        }
    }
    fout<<c;
    return 0;
}