Pagini recente » Istoria paginii runda/iiiiiiiiii/clasament | Cod sursa (job #979441) | Cod sursa (job #1493484) | Cod sursa (job #424789) | Cod sursa (job #2251433)
///SORTARE VECTOR + ELEMENTUL DIN MIJLOC - INEFICIENT
///SE FACE CU QUICKSELECT
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
int n;
vector<int> elem;
void quick_select(int a, int b)
{
if(a<b)
{
if(elem[(a+b)/2]>elem[b]) swap(elem[(a+b)/2], elem[b]);
int counter=a;
for(int i=a; i<b; i++)
{
if(elem[i]<elem[b]) swap(elem[counter++], elem[i]);
}
swap(elem[counter], elem[b]);
if(counter==n/2) return;
if(counter>n/2) quick_select(a, counter-1);
else quick_select(counter+1, b);
}
}
int main()
{
fin>>n;
for(int i=0; i<n; i++)
{
int x;
fin>>x;
elem.push_back(x);
}
quick_select(0, n-1);
int candidat=elem[n/2];
int counter=0;
for(int i=0; i<elem.size(); i++)
{
if(elem[i]==candidat) counter++;
}
if(counter>n/2) fout<<candidat<<' '<<counter<<'\n';
else fout<<-1<<'\n';
return 0;
}