Cod sursa(job #1908859)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 7 martie 2017 10:43:27
Problema Numarare triunghiuri Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 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);
    if(n<3)
        fprintf(fout,"0");
    else{
        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--;
                if(curent>0)
                    suma+=curent;
            }
        }
        fprintf(fout,"%d",suma/3);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}