Pagini recente » Cod sursa (job #1309938) | Cod sursa (job #2023625) | Cod sursa (job #562487) | Cod sursa (job #1523730) | Cod sursa (job #1277476)
// Algoritm de 100 puncte pe infoarena
// Aceasta solutie are complexitatea O(n log n), nu foloseste memorie suplimentara, dar suprascrie sirul initial.
#include<fstream>
#include <algorithm>
#define maxn 1000001
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
int n,maj,nrpoz,v[maxn];
int sortMajority(int n, int a[], int &nr)
{ sort (a, a + n);
int i = 0;
while (i < n)
{ int j = i;
while (j < n && a[j + 1] == a[i]) j++;
nr=j-i+1;
if (nr > n/2) return (a[i]);
i = j + 1;
}
return -1;
}
int main(void)
{ f>>n;
for(int i=0;i<n;i++) f>>v[i];
maj=sortMajority(n,v,nrpoz);
if(maj==-1) g<<"-1\n";
else g<<maj<<' '<<nrpoz<<'\n';
g.close(); return 0;
}