Pagini recente » Cod sursa (job #901294) | Cod sursa (job #2360648) | Cod sursa (job #67333) | Cod sursa (job #1977742) | Cod sursa (job #1312088)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
vector<int> CAND, AP, A;
void adaugaCand(int i) {
int in;
for(in=0; in<CAND.size(); in++) {
if(CAND[in] == 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) {
adaugaCand(cur);
if(CAND.size()>16) break;
}
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;
}