Pagini recente » Cod sursa (job #2528136) | Cod sursa (job #1438139) | Cod sursa (job #2721333) | Cod sursa (job #2927300) | Cod sursa (job #1025453)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f_in("elmaj.in");
ofstream g_out("elmaj.out");
#define maxN 1000001
int v[maxN];
typedef struct nod
{
int info;
nod* next;
}NOD;
typedef NOD* Nod;
void push(Nod &S,int val)
{
Nod nou;
nou=new NOD;
nou->info=val;
nou->next=S;
S=nou;
}
void pop(Nod &S)
{
Nod aux=S->next;
delete S;
S=aux;
}
int peek(Nod S)
{
return S->info;
}
void find_majority(int n)
{
NOD *S; int i,elem,nr,k=0;
S=new NOD;
S->info=-1;
S->next=NULL;
for(i=1; i<=n ;i++)
{
if(S->info==-1)
{
S->info=v[i];
k++;
}
else if(S->info==v[i])
{
push(S,v[i]);
k++;
}
else
{
if(k==1)
{
S->info=-1;
k=0;
}
else
{
pop(S);
k--;
}
}
}
elem=peek(S);
if(elem==-1)
{
g_out<<elem;
}
else
{
nr=0;
for(i=1; i<=n ;i++)
if(elem==v[i]) nr++;
g_out<<elem<<" "<<nr;
}
}
int main()
{
int i,n;
f_in>>n;
cout<<endl<<" Hello world !";
cout<<n<<endl;
for(i=1; i<=n ;i++)
{
f_in>>v[i];
}
for(i=1; i<=n ;i++)
{
cout<<v[i]<<" ";
}
find_majority(n);
return 0;
}