Cod sursa(job #2811991)

Utilizator andreifilimonPopescu Filimon Andrei Cosmin andreifilimon Data 3 decembrie 2021 18:49:20
Problema Numarare triunghiuri Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#define MAX_N 2000
int v[MAX_N+1];
int bin_search(int x, int n)
{
    int st=1,dr=n,c,b=-1;
    while(st<=dr)
    {
        c=(st+dr)/2;
        if(v[c]>x)
            dr=c-1;
        else if(v[c]<=x)
        {
            st=c+1;
            b=c;
        }
    }
    return b;
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("nrtri.in	","r");
    fout=fopen("nrtri.out","w");
    int n,i,j,u,max,p,sol=0;
    fscanf(fin,"%d",&n);
    for(i=0; i<n; i++)
        fscanf(fin,"%d",&v[i]);
    for(u=n-1; u>0; u--)
    {
        max=v[0];
        p=0;
        for(i=1; i<=u; i++)
            if(v[i]>max)
            {
                max=v[i];
                p=i;
            }
        v[p]=v[u];
        v[u]=max;
    }
    for(i=0; i<n; ++ i)
        for(j=i+1; j<=n; ++ j)
        {
            int k=bin_search(v[i]+v[j], n);
            if(k!=-1)
                sol=sol+k-j;
        }
    fprintf(fout,"%d\n",sol);
    fclose(fin);
    fclose(fout);
    return 0;
}