Pagini recente » Cod sursa (job #504920) | Cod sursa (job #2709966) | ignore_plz | Cod sursa (job #893695) | Cod sursa (job #1184069)
#include <algorithm>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#define dim 1000001
using namespace std;
int a[dim],n,nr=0;
int part(int l,int r){
int i=l-1,j=r+1,pivot=a[l+rand()%(r-l+1)];
while(1){
do{i++;} while(a[i]<pivot);
do{j--;} while(a[j]>pivot);
if(i<j)
swap(a[i],a[j]);
else
return j;
}
}
void sdo(int l,int r,int k){
if(l==r) return;
int q,t;
q=part(l,r);
t=q-l+1;
if(t>=k)
sdo(l,q,k);
else
sdo(q+1,r,k-t);
}
int main(){
ifstream f("elmaj.in");
ofstream g("elmaj.out");
srand(time(NULL));
int i;
f >> n;
for(i=1;i<=n;i++){
f >> a[i];
}
int k=n/2;
sdo(1,n,k);
for(i=1;i<=n;i++){
if(a[i]==a[k]) nr++;
}
if(nr>=n/2+1) g << a[k] << " " << nr;
else g << -1;
}