Pagini recente » Cod sursa (job #2910933) | Cod sursa (job #1700239) | Cod sursa (job #1826643) | Cod sursa (job #2160900) | Cod sursa (job #1040461)
#include<fstream>
#include<cstdlib>
#include<ctime>
#define numaru 1000001
using namespace std;
int v[numaru];
ifstream f("elmaj.in");
ofstream g("elmaj.out");
int sdo(int s,int d,int k)
{
int x,poz,cs,cd;
while(true)
{
if(s==d)return v[s];
cs=s;cd=d;
poz=rand()%(d-s)+s+1;
x=v[poz];
while(s<d)
{
while(x>v[s])++s;
while(x<v[d])--d;
if(v[s]==v[d])++s;
if(s<d) v[s]=(v[d]+v[s])-(v[d]=v[s]);
}
if(k==d)return v[d];
else if(k>d){s=d+1;d=cd;}
else {s=cs; d=d-1; }
}
}
int main()
{
int i,n,nr=0,x;
f>>n;
for(i=1;i<=n;++i) f>>v[i];
x=sdo(1,n,n/2);
for(i=1;i<=n;++i)
if(x==v[i])++nr;
if(nr>n/2)g<<x<<" "<<nr<<"\n";
else g<<"-1\n";
f.close();
g.close();
return 0;
}