Pagini recente » Cod sursa (job #183119) | Cod sursa (job #3207686) | Monitorul de evaluare | Cod sursa (job #199417) | Cod sursa (job #2253456)
//statistici de ordrine
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define MAX 1000005
long long a[MAX];
long long statOrd(int left, int right, int k){
srand(time(NULL));
while(left!=right && k>0){
int piv=a[rand()%(right-left+1)+left];
int i=right, j=left;
while(j<=i){
while(a[i]>piv) i--;
while(a[j]<piv) j++;
if(j<=i){
swap(a[i],a[j]);
i--; j++;
}
}
if(left<=i && left+k<=i) right=i;
else if(right>=j){
left=j;
k=k-j;
}
}
return a[left];
}
int main(){
ifstream in("elmaj.in");
int i, n;
long long x;
in>>n;
for(i=0;i<n;i++) in>>a[i];
in.close();
statOrd(0, n-1, n/2-1);
x=a[n/2-1];
int ap=0;
for(i=0;i<n;i++)
if(a[i]==x) ap++;
FILE *out=fopen("elmaj.out","w");
if(ap<=n/2) fprintf(out,"-1");
else fprintf(out,"%lld %i",x,ap);
fclose(out);
return 0;
}