Advertisement
Hezov

Bitona Simulare CNVA

Feb 11th, 2025
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream cin("bitona.in");
  4. ofstream cout("bitona.out");
  5. /// crestere ... scadere
  6. /// Cazul 1 : secventa este bitona din start
  7. /// Cazul 2 : secventa este strict crescatoare -> rotim la stanga odata.
  8. /// Cazul 3 : secventa este strict descrescatoare -> rotim la dreapta odata.
  9. /// Cazul 4 : sa luam exemplul
  10. /// 6 4 3 6 8 10 19 9 (initial)
  11. // 3 6 8 10 19 9 6 4 ->
  12. // daca secventa este la inceput descrescatoare trebuie verificat
  13. // ca primul element sa fie mai mic decat ultimul.
  14. /// mai este si cazul invers in care secventa este la inceput crescatoare
  15. // si atunci o putem face bitona daca primul element este mai mare decat ultimul
  16.  
  17. int main()
  18. {
  19.     bool cresc = true, descresc = true;
  20.     int initDir = 0, currentDir = 0, prevDir = 0, nrschimbari = 0;
  21.     int n, prev, current, primul, ultimul ; cin >> n;
  22.     if(n == 1) return false;
  23.     if(n == 2) return true;
  24.     // Acum n>=3
  25.     cin >> primul ; prev = primul;
  26.     for(int i = 2;i<=n;i++)
  27.     {
  28.         cin >> current;
  29.         ultimul = current;
  30.         if(current > prev) descresc = false , currentDir = 1 ;
  31.         if(current < prev) cresc = false, currentDir = -1;
  32.  
  33.         if(prevDir != currentDir)
  34.             nrschimbari++;
  35.         if(nrschimbari == 1) initDir = currentDir;
  36.         prevDir= currentDir;
  37.         prev = current;
  38.     }
  39.     if(cresc || descresc) cout << "DA\n";
  40.     else if(initDir == 1 && nrschimbari == 2) cout << "DA\n";
  41.     else if(initDir == -1 && nrschimbari == 3 && primul <= ultimul)
  42.         cout << "DA\n";
  43.     else if(initDir == 1 && nrschimbari == 3 && ultimul <= primul)
  44.         cout << "DA\n";
  45.     else cout << "NU\n";
  46.     return 0;
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement