Pagini recente » Cod sursa (job #448922) | Cod sursa (job #626948) | Cod sursa (job #644720) | Cod sursa (job #2729617) | Cod sursa (job #672124)
Cod sursa(job #672124)
#include<fstream>
#include<stdlib.h>
#include<time.h>
#define inf "elmaj.in"
#define outf "elmaj.out"
#define NMax 1000001
using namespace std;
fstream f(inf, ios::in), g(outf, ios::out);
int n, v[NMax];
void read()
{
f>>n;
for(int i=1; i<=n; i++) f>>v[i];
}
int part(int li, int ls) {
int i = li-1, j = ls+1, p = v[li + rand()%(ls-li+1)];
while( 1 ) {
do { i++; } while( v[i]<p );
do { j--; } while( v[j]>p );
if( i<j ) swap(v[i], v[j]);
else return i;
}
return 0;
}
void qs(int li, int ls, int k) {
if( li==ls ) return;
int p = part(li, ls);
int t = p-li+1;
if( k<=t ) qs(li, p, k);
else qs(p+1, ls, k-t);
}
void solve()
{
srand( time(0) );
qs(1, n, n/2);
int x = v[n/2], nr = 0;
for(int i=1; i<=n; i++)
if( v[i]==x ) nr++;
nr > n/2 ? g<<x <<" "<< nr : g<<"-1";
}
int main()
{
read(); solve();
f.close(); g.close();
return 0;
}