Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
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; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)