Pagini recente » Cod sursa (job #57988) | Cod sursa (job #2850506) | Cod sursa (job #3232413) | Cod sursa (job #3243462) | Cod sursa (job #58243)
Cod sursa(job #58243)
#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;
}