Pagini recente » Cod sursa (job #2566710) | Cod sursa (job #164755) | Cod sursa (job #2634033) | Cod sursa (job #2139583) | Cod sursa (job #635192)
Cod sursa(job #635192)
#include <fstream>
#include <list>
using namespace std;
const char inFile[] = "elmaj.in";
const char outFile[] = "elmaj.out";
const int hashSize = 20000;
list<pair<int, int> > List[hashSize];
int N;
int element = -1;
void Citire();
void Afisare();
int find(int value);
int rest(int value);
void insert(int value);
void Citire()
{
fstream fin(inFile, ios::in);
fin >> N;
int current;
for(int i = 0 ; i < N; i++)
{
fin >> current;
insert(current);
}
fin.close();
}
void Afisare()
{
fstream fout(outFile, ios::out);
if(element == -1)
{
fout << "-1\n";
}
else
{
fout << element << " " << find(element) << "\n";
}
fout.close();
}
int rest(int value)
{
return value % hashSize;
}
void insert(int value)
{
int h = rest(value);
bool gasit = false;
for(list<pair< int, int> >::iterator itr = List[h].begin(); itr != List[h].end();
itr++)
{
if(itr->first == value)
{
gasit = true;
itr->second ++;
if(itr->second > N/2)
{
element = itr->first;
}
break;
}
}
if( gasit == false)
{
List[h].push_back(make_pair(value, 1));
}
}
int find(int value)
{
int h = rest(value);
for(list<pair< int, int> >::iterator itr = List[h].begin(); itr != List[h].end();
itr++)
{
if(itr->first == value)
{
return itr->second;
}
}
return -1;
}
int main(int argc, char* argv[])
{
Citire();
Afisare();
}