Cod sursa(job #58243)

Utilizator rss1987Marin Radu rss1987 Data 4 mai 2007 20:01:08
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include<stdio.h>

long long REZ;
#define MAXN 1024

int V[MAXN],size1,size2,cntOf2[MAXN*MAXN],valOf2[MAXN*MAXN],cntOf1[MAXN],valOf1[MAXN];
int aux_vec[MAXN*MAXN];
int N,L;


void citesteDate()
{
	int i;
	freopen("oite.in","r",stdin);
	scanf("%d %d",&N,&L);
	for(i=1;i<=N;i++)
		scanf("%d",&V[i]);
}

void sort(int *vec, int a, int b)
{
	if (a>=b) 
		return;
	int m,i,j,k;
	m = (a+b)>>1;
	sort(vec,a,m);
	sort(vec,m+1,b);
	for(i=k=a,j=m+1;i<=m && j<=b;k++)
		if (vec[i]<vec[j])
		{
			aux_vec[k]=vec[i];
			i++;
		}
		else
		{
			aux_vec[k]=vec[j];
			j++;
		}
	for(;i<=m;i++,k++)
		aux_vec[k]=vec[i];
	for(;j<=b;j++,k++)
		aux_vec[k]=vec[j];
	for(i=a;i<=b;i++)
		vec[i]=aux_vec[i];
}

void proceseaza()
{
	int i,j;
	
	// SUM OF 1
	for(i=1;i<=N;i++)
		valOf1[i] = V[i];
	sort(valOf1,1,N);
	size1 = 1;
	cntOf1[1] = 1;
	for(i=2;i<=N;i++)
		if (valOf1[i]==valOf1[size1])
			cntOf1[size1]++;
		else
		{	size1++;
			valOf1[size1] = valOf1[i];
			cntOf1[size1] = 1;
		}
	
	// SUM OF 2
	size2 = 0;
	for(i=1;i<=N;i++)
		for(j=i+1;j<=N;j++)
			valOf2[++size2] = V[i]+V[j];
	sort(valOf2,1,size2);
	j = size2;
	size2 = 1;
	cntOf2[1] = 1;
	for(i=2;i<=j;i++)
		if (valOf2[i]==valOf2[size2])
			cntOf2[size2]++;
		else
		{	size2++;
			valOf2[size2] = valOf2[i];
			cntOf2[size2] = 1;
		}
}



void afiseazaRez()
{
	freopen("oite.out","w",stdout);
	printf("%lld\n",REZ);
}


int main()
{
	citesteDate();
	proceseaza();
	afiseazaRez();
	return 0;
}