Cod sursa(job #1760418)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 20 septembrie 2016 19:37:23
Problema Numarare triunghiuri Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>
int v[800],n;
void myqsort(int start,int stop)
{
    int i,j,pivot,aux;
    i=start;j=stop;
    pivot=v[(i+j)/2];
    while(i<=j)
    {
        while(v[i]<pivot)
            i++;
        while(v[j]>pivot)
            j--;
        if(i<=j)
        {
            aux=v[i];
            v[i]=v[j];
            v[j]=aux;
            i++;j--;
        }
    }
    if(j>start)
        myqsort(start,j);
    if(i<stop)
        myqsort(i,stop);
}
inline int cbin(int x)
{
    int i,j,mij;
    i=0;j=n-1;
    while(i<=j)
    {
        mij=(i+j)/2;
        if(x==v[mij])
        {
            while(v[mij]==x)
                mij++;
            return mij-1;
        }
        if(x<v[mij])
            j=mij-1;
        else
            i=mij+1;
    }
    return j;
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("nrtri.in","r");
    fout=fopen("nrtri.out","w");
    int i,co=0,k,j;
    fscanf(fin,"%d",&n);
    for(i=0;i<n;i++)
        fscanf(fin,"%d",&v[i]);
    myqsort(0,n-1);
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++)
        {
            k=cbin(v[i]+v[j]);
            co+=k-j;
        }
    fprintf(fout,"%d",co);
    fclose(fin);
    fclose(fout);
    return 0;
}