Cod sursa(job #1873215)

Utilizator ajajajEuuuuu ajajaj Data 8 februarie 2017 20:54:22
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#define N 801
using namespace std;
int i,j,n,nr,v[N];
void quick(int li,int ls)
{
    int i=0,j=0,aux=0,m=0;
    m=a[(li+ls)/2];
    i=li; j=ls;
    while(i<=j)
    {
        while(a[i]<m && i<ls)
        i++;
        while(a[j]>m && j>li)
        j--;
        if(i<=j)
        {
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            i++;
            j--;
        }}
        if(i<ls)
        quick(i,ls);
        if(j>li)
        quick(li,j);
    }
int cb(int x,int l,int r)
{
    int mid,p=j;
    while(l<=r)
    {
        mid=l+(r-l)/2;
        if(v[mid]<=x)
        {
            l=mid+1;
            p=mid;
        }
        else
        r=mid-1;
    }
    return p;
}
int main()
{
    freopen("nrtri.in","r",stdin);
    freopen("nrtri.out","w",stdout);
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&v[i]);
    quick(0,n-1);
    for(i=0;i<n-2;i++)
    for(j=i+1;j<n-1;j++)
    nr+=cb(v[i]+v[j],j+1,n-1)-j;
    printf("%d",nr);
    return EXIT_SUCCESS;
}