Pagini recente » Cod sursa (job #2439313) | Cod sursa (job #2632030) | Cod sursa (job #1466468) | Monitorul de evaluare | Cod sursa (job #2185083)
#include <fstream>
#include <vector>//pt vectori dinamici.
#include <algorithm>//pt sort.
using namespace std;
ifstream in ("elmaj.in");
ofstream out ("elmaj.out");
int main()
{
int n,aux;//nr de numere;
in>>n;
vector<int> v;//vector dinamic; poti sa pui ce nume vrei.
for(int i=0;i<n;i++)
{
in>>aux;
v.push_back(aux);//adaug pe aux in coada vectorului. (il adaug in multime);
//cand dai push_back, creste cu 1 lungimea vectorului.
}
//la final v va contine toate numerele ce intra in alcatuirea fisierului (alea pt lista);
//v nu e sortat.
sort(v.begin(),v.end());//sortam de la ineput pana la sfarsit.
//trebuie gasit elementu majoritar.
int Max=0;//numaru maxim de aparitii.
int MaxV=0;//elementu care apare de cele mai multe ori. de Max ori.
aux=1;
int auxv=v[0];
for(int i=1;i<v.size()/*lungimea vectorului*/;i++)//pe v[0] nu il mai verifici.s
{
if(auxv==v[i])
{
aux++;//daca nr curent e egal cu nr verificat, inseamna ca mai apare o data, adica acum;
}
else //daca nu, verificam din nou pt noul element:
{
if(aux>Max)//daca numarul curent apare de mai multe ori decat maximul, e noul maxim;
{
Max=aux;
MaxV=auxv;//noul numar ce apare de max ori e auxv;
}
auxv=v[i];//dupa ce am rezolvat maximu, facem din nou toata povestea pt noul numar diferit de precedentu;
aux=1;//momentan a aparut o singura data;
//astea doua le faci mereu (ultimele doua linii)
}
}
//verifici sa fie elmaj;
if(MaxV>=n/2+1)
{
out<<MaxV<<' '<<Max;
}
return 0;
}