fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. // Jarod42
  6. // solution of http://c...content-available-to-author-only...s.com/contest/454/problem/B
  7.  
  8. int get_unicorn_shift(const std::vector<int>& v)
  9. {
  10. auto mid = std::is_sorted_until(v.begin(), v.end());
  11. if (mid == v.end()) {
  12. return 0;
  13. }
  14. auto end = std::is_sorted_until(mid, v.end());
  15. if (end != v.end() || v.front() < v.back()) {
  16. return -1;
  17. }
  18. return end - mid;
  19. }
  20.  
  21. int main()
  22. {
  23. std::cout << get_unicorn_shift({2, 1}) << std::endl; // 1
  24. std::cout << get_unicorn_shift({1, 3, 2}) << std::endl; // -1
  25. std::cout << get_unicorn_shift({3, 2, 1}) << std::endl; // -1
  26. std::cout << get_unicorn_shift({1, 2}) << std::endl; // 0
  27. std::cout << get_unicorn_shift({11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) << std::endl; // 10
  28. return 0;
  29. }
  30.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
1
-1
-1
0
10