Pagini recente » Cod sursa (job #3258495) | Cod sursa (job #1367845) | Cod sursa (job #1942318) | Cod sursa (job #1279108) | Cod sursa (job #1367932)
/*
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;
for(int i=1;i<=n;++i)f>>v[i];
k=(n+1)/2;
nth_element(v+1, v+k, v+n+1); //ATENTIE v+k !!!
int majoritar=v[k];
int 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;
}