Cod sursa(job #805798)

Utilizator ZancrowAugustin Zancrow Data 1 noiembrie 2012 10:15:28
Problema Elementul majoritar Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
int a[1000001];
void qs(int l,int r){
    int i,j,p;
    int *z,*q;
    i=l; j=r; p=a[(i+j)/2];
    while(i<j)
    {
        while(a[i]<p) i++;
        while(a[j]>p) j--;
        if(i<=j)
        {
            int t;
            z=&a[i]; q=&a[j];
            t=a[i];
            *z=a[j];  *q=t;
            i++; j--;
        }
    }
    if(i<r) qs(i,r);
    if(j>l) qs(l,j);
}

int main(){
    int i,j,n,k,x;
FILE* f=fopen("elmaj.in","r");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++){
        fscanf(f,"%d",&a[i]);
    }
    qs(1,n);
    x=a[(n+1)/2];
    k=0;
for (i=1;i<=n;i++)if(a[i]==x) k++;
FILE* h=fopen("elmaj.out","w");
if(k>n/2) fprintf(h,"%d %d",x,k);
else fprintf(h,"-1");
fclose(f);fclose(h);
  return 0;
}