Cod sursa(job #1908850)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 7 martie 2017 10:41:40
Problema Numarare triunghiuri Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int bete[60001];
int v[800];

int abs(int a){
    if(a<0)
        a=-a;
    return a;
}

int main()
{
    FILE *fin, *fout;
    int n,i,j,max,suma,curent;
    fin=fopen("nrtri.in","r");
    fout=fopen("nrtri.out","w");
    fscanf(fin,"%d",&n);
    max=0;
    for(i=0;i<n;i++){
        fscanf(fin,"%d",&v[i]);
        bete[v[i]]++;
        if(v[i]>max)
            max=v[i];
    }
    for(i=1;i<60000;i++){
        bete[i]+=bete[i-1];
    }
    suma=0;
    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++){
            curent=bete[v[i]+v[j]]-bete[abs(v[j]-v[i])-1];
            if(v[i]<=v[i]+v[j] && v[i]>=abs(v[j]-v[i]))
                curent--;
            if(v[j]<=v[i]+v[j] && v[j]>=abs(v[j]-v[i]))
                curent--;
            printf("%d %d %d\n",v[i]+v[j],abs(v[j]-v[i])-1,curent);
            if(curent>0)
                suma+=curent;
        }
    }
    fprintf(fout,"%d",suma/3);
    fclose(fin);
    fclose(fout);
    return 0;
}