Cod sursa(job #1233938)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 26 septembrie 2014 13:21:12
Problema Numarare triunghiuri Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>
int v[800];
int main()
{
    FILE *fin, *fout;
    int n,i,j,k,nrtri,u,max,p;
    fin=fopen("nrtri.in","r");
    fscanf(fin,"%d/n",&n);
    for(i=0;i<n;i++){
      fscanf(fin,"%d ",&v[i]);
    }
    fclose(fin);
    fout=fopen("nrtri.out","w");
    if(n<3){
      fprintf(fout,"%d",0);
      return 0;
    }
    else{
      for(u=n-1;u>0;u--){
        max=v[0];p=0;
        for(i=0;i<u;i++){
          if(max<v[i]){
            max=v[i];p=i;
          }
          if(max>v[u]){
            v[p]=v[u];
            v[u]=max;
          }
        }
      }
      nrtri=0;
      for(i=0;i+2<n;i++){
        k=i+2;
        for(j=i+1;j+1<n;j++){
          while(k<=j)k++;
          while(k<n&&v[k]<=v[i]+v[j])k++;
          if(k>j)
            nrtri=nrtri+k-j-1;
        }
      }
      fprintf(fout,"%d",nrtri);
    }
    fclose(fout);
    return 0;
}