Pagini recente » Cod sursa (job #2695930) | Cod sursa (job #1821544) | Cod sursa (job #1276684) | Cod sursa (job #1373279) | Cod sursa (job #1367941)
/*
Statistici de ordine - O(n)
Statistica k a lui v=al k-lea cel mai mic element din v
nth_element(v+1,v+k,v+1+n) //ATENTIE v+k
-pune pe pozitia k statistica de ordin k
*pe poz 1...k-1 elementele mai mici decat v[k]
*pe poz k+1...n elementele mai mari decat v[k]
*intr-o ordine aleatoare
DECI E METODA DE A OBTINE CELE MAI MICI/MARI k ELEMENTE
FARA A LE SORTA! E MAI RAPID!
*/
#include <fstream>
#include <algorithm> //nth_element();
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
int n,k,v[1000009];
int main()
{
f>>n;
f>>v[1];
int majoritar=v[1], nr=1;
for(int i=2;i<=n;++i)
{
f>>v[i];
if(v[i]==majoritar)nr++;
else
{
--nr;
if (nr==0)majoritar=v[i];
}
}
nr=0;
for (int i=1; i<=n; i++)
if(v[i]==majoritar)++nr;
if (nr>=n/2+1) g<< majoritar<< ' ' <<nr<<'\n';
else g<<-1<<'\n';
f.close();g.close();
return 0;
}