Nu aveti permisiuni pentru a descarca fisierul grader_test10.ok
Cod sursa(job #1526551)
| Utilizator | Data | 16 noiembrie 2015 20:57:50 | |
|---|---|---|---|
| Problema | Elementul majoritar | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Teme Pregatire ACM Unibuc 2013 | Marime | 0.94 kb |
#include <iostream>
#include <fstream>
#define nmax 1000004
using namespace std;
int V[nmax], n, nr=0, pretendent;
long long candidatu_invingator()
{
long long candidat; int k=0;
for(int i=1; i<=n; i++)
{
if(k==0){
candidat = V[i];
k = 1;
}else if (candidat==V[i]){
k++; // ca la parantezare, mai avem unu de cuplat
}else
k--; // inseamna ca-s diferite si putem face o pereche->mai putini cu 1 de cuplat
}
return candidat;
}
int main()
{
ifstream f("elmaj.in");
ofstream g("elmaj.out");
f >> n;
for(int i=1; i<=n; i++)
{
f >> V[i];
}
pretendent = candidatu_invingator();
for(int i=1; i<=n; i++)
{
if (V[i] == pretendent) nr++;
}
if (nr >= n/2+1){
g << pretendent << " " << nr;
}else{
g << -1;
}
f.close();
g.close();
return 0;
}
