Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream cin("bitona.in");
- ofstream cout("bitona.out");
- /// crestere ... scadere
- /// Cazul 1 : secventa este bitona din start
- /// Cazul 2 : secventa este strict crescatoare -> rotim la stanga odata.
- /// Cazul 3 : secventa este strict descrescatoare -> rotim la dreapta odata.
- /// Cazul 4 : sa luam exemplul
- /// 6 4 3 6 8 10 19 9 (initial)
- // 3 6 8 10 19 9 6 4 ->
- // daca secventa este la inceput descrescatoare trebuie verificat
- // ca primul element sa fie mai mic decat ultimul.
- /// mai este si cazul invers in care secventa este la inceput crescatoare
- // si atunci o putem face bitona daca primul element este mai mare decat ultimul
- int main()
- {
- bool cresc = true, descresc = true;
- int initDir = 0, currentDir = 0, prevDir = 0, nrschimbari = 0;
- int n, prev, current, primul, ultimul ; cin >> n;
- if(n == 1) return false;
- if(n == 2) return true;
- // Acum n>=3
- cin >> primul ; prev = primul;
- for(int i = 2;i<=n;i++)
- {
- cin >> current;
- ultimul = current;
- if(current > prev) descresc = false , currentDir = 1 ;
- if(current < prev) cresc = false, currentDir = -1;
- if(prevDir != currentDir)
- nrschimbari++;
- if(nrschimbari == 1) initDir = currentDir;
- prevDir= currentDir;
- prev = current;
- }
- if(cresc || descresc) cout << "DA\n";
- else if(initDir == 1 && nrschimbari == 2) cout << "DA\n";
- else if(initDir == -1 && nrschimbari == 3 && primul <= ultimul)
- cout << "DA\n";
- else if(initDir == 1 && nrschimbari == 3 && ultimul <= primul)
- cout << "DA\n";
- else cout << "NU\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement