Cod sursa(job #800080)

Utilizator ZancrowAugustin Zancrow Data 20 octombrie 2012 18:13:45
Problema Elementul majoritar Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.89 kb
#include<stdio.h>
int a[100];


void sw( int* x, int* y){
 int t;
t=*x;
*x=*y;
*y=t;

}

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]; q=&a[j];
        sw(z,q); 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;

}