Cod sursa(job #2470311)

Utilizator ilincaspIlinca Sfrijan-Penciu ilincasp Data 8 octombrie 2019 23:26:57
Problema Numarare triunghiuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
using namespace std;

int n, z[3001], nr;

FILE *f=fopen("nrtri.in","r");
FILE *g=fopen("nrtri.out","w");
void vector()
{
    fscanf(f, "%d", &n);
    for(int i=1; i<=n; i++)
        fscanf(f, "%d", &z[i]);
}

int verif(int a, int b, int c)
{
    if(a+b>=c && a+c>=b && b+c>=a)
    {
        return 1;
    }
    return 0;
}

int cautbin(int x, int y)
{
    int rezultat, st,dr;
    st=y+1;
    dr=n;
    rezultat=-1;
    while(st<=dr)
    {
        int mijloc = (st + dr) / 2;
        if(verif(z[x], z[y], z[mijloc]))
        {
            rezultat=mijloc;
            st=mijloc+1;
        }
        else
        {
            dr=mijloc-1;
        }
    }
    return rezultat;
}

void vector2()
{
    int i,nr1,j;
    for( i=1; i<=n-2; i++)
        for( j=i+1; j<=n-1; j++)
        {
            nr1=cautbin(i, j);
            if(nr1!=-1)
                nr+=nr-j;
        }
    fprintf(g, "%d", nr);
}

int main()
{
    vector();
    vector2();
    return 0;
}