Cod sursa(job #800472)

Utilizator ZancrowAugustin Zancrow Data 21 octombrie 2012 18:05:49
Problema Elementul majoritar Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.9 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)
        {
            z = a[i]; a[i] = a[j]; a[j] = z;
            i++; j--;
        }
    }
    if(i<r) qs(i,r);
    if(j>l) qs(l,j);
}

int main(){
    int i,j,n,k;
    FILE* f = fopen("elmaj.in","r");
    fscanf(f,"%i",&n);
    for(i=1;i<=n;i++){
        fscanf(f,"%i",&a[i]);
    }
    qs(1,n);

   k=1;
     for(i=1;i<=n;i++){
        if(a[i]==a[i+1])
        {
        j=1;
        while(a[i]==a[i+1])
        {
            j++;i++;
        }

        if(j>(n/2))
        {
           k=0;
           break;
        }

    }
    }

    FILE*h=fopen("elmaj.out","w");

 if(k) fprintf(h,"-1");
 else fprintf(h,"%d %d",a[i],j);
 fclose(f);
 fclose(h);
 return 0;

}