Cod sursa(job #809702)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 8 noiembrie 2012 21:21:27
Problema Numarare triunghiuri Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
int v[800];
void sortare(int n){
    int pmin,aux,i,j;
    for(i=0;i<n;i++){
        pmin=i;
        for(j=i+1;j<n;j++)
            if(v[j]<v[pmin])
                pmin=j;
        if(pmin!=i){
            aux=v[i];
            v[i]=pmin;
            v[pmin]=aux;
        }
    }
}
int main(){
    int n,i,j,s,pas,k;
    FILE *fin,*fout;
    fin=fopen("nrtri.in","r");
    fout=fopen("nrtri.out","w");
    fscanf(fin,"%d",&n);
    if(n==1||n==2)
        fprintf(fout,"0");
    else {
    for(i=0;i<n;i++)
        fscanf(fin,"%d",&v[i]);
    sortare(n);
    s=0;
    for(i=0;i<n-2;i++){
        for(j=i+1;j<n-1;j++){
            pas=1<<9;
            k=j+1;
            while(pas!=0){
                if(v[k]<=v[i]+v[j])
                    i+=pas;
                pas/=2;
            }
            s+=k-j;
        }
    }
    fprintf(fout,"%d",s);
    }
    return 0;
}