Advertisement
STANAANDREY

elemmaj

Sep 4th, 2019
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. // Problema rezolvata pe Tutoriale-Pe.NET
  2. // Citeste toata explicatia aici: http://tutoriale-pe.net/ro/elementul-majoritar-elmaj/
  3.  
  4. #include    <iostream>
  5.  
  6. using namespace std;
  7.  
  8. const int LIM = 1000005;
  9.  
  10. int N;
  11. int V[LIM];
  12.  
  13. void Read()
  14. {
  15.     cin >> N;
  16.  
  17.     // Citim vectorul normal
  18.     for(int i = 0; i < N; i++)
  19.         cin >> V[i];
  20.  
  21.     // Declaram variabilele descrise mai sus
  22.     int contor = 0, candidat = 0, aparitii = 0;
  23.  
  24.     // Parcurgem vectorul
  25.     for(int i = 0; i < N; i++)
  26.     {
  27.         // Atunci cand contorul este 0, alegem elementul curent ca fiind candidatul
  28.         // si setam contorul pe "1"
  29.         if(contor == 0)
  30.         {
  31.             candidat = V[i];
  32.             contor = 1;
  33.         }
  34.         else
  35.         {
  36.             // Daca avem deja contorul pornit, verificam elementul curent si adaugam +1
  37.             // daca este acelasi nr ca si candidatul, si scadem -1 in caz contrar
  38.             if(V[i] == candidat)
  39.                 contor += 1;
  40.             else
  41.                 contor -= 1;
  42.         }
  43.     }
  44.  
  45.     // Mai parcurgem o data vectorul pentru a numara de cate ori apare candidatul
  46.     for(int i = 0; i < N; i++)
  47.         if(V[i] == candidat)
  48.             aparitii += 1;
  49.  
  50.     // Tratam cazul in care nu avem element majoritar
  51.     /*if(aparitii < N / 2 + 1)
  52.         cout << "nu exista";
  53.     else//*/
  54.         cout << candidat << " " << aparitii;
  55. }
  56.  
  57. int main()
  58. {
  59.     Read();
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement