Cod sursa(job #1848601)

Utilizator bobotheslayerBogdan Zaharia bobotheslayer Data 16 ianuarie 2017 12:32:15
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <cstdio>

int v[2001],capinf[30000],capsup[30000],aranjat[30000],fr[30000];
int main()
{
    FILE *intrare,*iesire;
    int n,i=0,j=0,k=0,num=0,aux,t=0;
    intrare=fopen("nrtri.in","r");
    iesire=fopen("nrtri.out","w");
    fscanf(intrare,"%d",&n);
    for (i=0; i<=n-1; ++i)
        fscanf(intrare,"%d",&v[i]);
    for (i=0; i<=n-2; ++i)
    {
        for (j=i+1; j<=n-1; ++j)
        {
            if (v[i]>v[j])
            {
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
            }
        }
    }

    for (i=0; i<=n-2; ++i)
    {
        k=i+2;
        for (j=i+1; j<=n-1; ++j)
        {
            while (k<=n-1 && v[i]+v[j]>v[k])
                ++k;
            if (k>j)
                num=num+k-j-1;
        }
    }

    for (i=n-1; i>=2; --i)
    {
        if (v[i]-v[i-1]>v[i-2])
            continue;
        {
            for (j=i-1; j>=1; --j)
            {
                if (v[j]<=v[i]-v[j])
                    break;

                for (k=j-1; k>=0; --k)
                {
                    if (v[j]+v[k]>v[i])
                        ++num;
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
    fprintf(iesire,"%d",num);
}