Pagini recente » Cod sursa (job #1558460) | Istoria paginii template/schimbare-borland | Cod sursa (job #2569621) | Cod sursa (job #955518) | Cod sursa (job #1481547)
#include<stdio.h>
#include<malloc.h>
long N,count,*v;
void merge(long *v,long l,long m,long r)
{
long *vp=(long*)malloc((r-l+1)*sizeof(long));//vetor intermediar
long i=l,j=m+1,k=0,s=0;
while(i<=m && j<=r)
{
if(v[i]<=v[j])
{
vp[k]=v[i];
i++;
}
else
{
vp[k]=v[j];
j++;
}
k++;
}
if(i>m)
for(s=j;s<=r;s++)
{
vp[k]=v[s];
k++;
}
else
for(s=i;s<=m;s++)
{
vp[k]=v[s];
k++;
}
for(s=0;s<=r-l;s++)
v[l+s]=vp[s];
free(vp);
}
void mergesort(long *v,long l,long r)
{
if(l==r) return;
long m=(l+r)/2;
mergesort(v,l,m);
mergesort(v,m+1,r);
merge(v,l,m,r);
}
int main()
{
FILE* f1,*f2;
f1=fopen("elmaj.in","r");
f2=fopen("elmaj.out","w");
fscanf(f1,"%ld",&N);
v=(long*)malloc(N*sizeof(long));
for(int i=0;i<N;i++)
fscanf(f1,"%ld",&v[i]);
mergesort(v,0,N-1);
int i;
for(i=0;i<N;i++)
if(v[i]==v[N/2])
count++;
if(count>N/2)
fprintf(f2,"%ld %ld",v[N/2],count);
else fprintf(f2,"%-1\n");
return 0;
}