Cod sursa(job #658070)

Utilizator RalleRaluca Ralle Data 7 ianuarie 2012 21:06:34
Problema Elementul majoritar Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;

ifstream in("elmaj.in");
ofstream out("elmaj.out");

void quicks(int a[],int stg,int dr)
{int i=stg;
 int j=dr;
 int pivot=a[(i+j)/2];
 while(i<=j)
 {while(a[i]<pivot)i++;
  while(a[j]>pivot)j--;
  if(i<=j){int b=a[i];
           a[i]=a[j];
           a[j]=b;
           i++;
           j--;}
  }
  if(stg<j) quicks(a,stg,j);
  if(dr>i) quicks(a,i,dr);
}

int majoritar(int v[100],int n)
{int i,nrap=0;
 quicks(v,1,n);
 for(i=1;i<=n;i++)
 if(v[i]==v[n/2]) nrap++;
if(nrap>=((n/2)+1)) return nrap;
                  else return-1;
}           
int main()
{int n,a[100],i,nrap=0;
 in>>n;
 for(i=1;i<=n;i++)
 in>>a[i];
if(majoritar(a,n)!=-1) {quicks(a,1,n);
                        out<<a[n/2]<<" "<<majoritar(a,n);
                        }
                   else out<<-1;   


 return 0;}