Pagini recente » Cod sursa (job #563329) | Cod sursa (job #1486051) | Cod sursa (job #2073041) | Cod sursa (job #906708) | Cod sursa (job #1312095)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
vector<int> CAND, AP, A;
vector<int>::iterator it;
void adaugaCand(int i) {
for(it = CAND.begin(); it!=CAND.end(); it++) {
if(*it == i) {
return;
}
}
CAND.push_back(i);
AP.push_back(0);
}
int b, e;
bool bsearch(int &val, int &poz) {
b = 0; e = CAND.size() - 1;
while(b!=e) {
if(val>CAND[(b+e)/2])
b = (b+e)/2+1;
else
e = (b+e)/2;
}
poz = b;
return val == CAND[b];
}
void afis(vector<int> &v) {
for(int i=0; i<v.size(); i++) {
fout<<v[i]<<" ";
}fout<<endl;
}
int n, last, cur;
int main() {
fin>>n>>last;
A.push_back(last);
for(int i=2; i<=n; i++) {
fin>>cur;
A.push_back(cur);
if(cur == last) {
if(CAND.size()<=16)
adaugaCand(cur);
}
last = cur;
}
sort(CAND.begin(), CAND.end());
int poz;
for(int i=0; i<n; i++) {
cur = A[i];
if(bsearch(cur, poz))
AP[poz]++;
}
//afis(CAND);
//afis(AP);
for(int i=0; i<CAND.size(); i++) {
if(AP[i] > n/2) {
fout<<CAND[i]<<" "<<AP[i];
return 0;
}
}
fout<<-1;
return 0;
}