Guest User

Untitled

a guest
Jul 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <string>
  6. #include <vector>
  7. #include <set>
  8.  
  9. using namespace std;
  10.  
  11. class FoxSequence {
  12. public:
  13. string isValid(vector <int> seq) {
  14. int a, b, c, d;
  15.  
  16. // between 0 and a
  17. for(int i = 0; i < seq.size(); i++) {
  18. if(seq[i] >= seq[i+1]) { a = i; break; }
  19. }
  20. // between a and b
  21. for(int i = a; i < seq.size(); i++) {
  22. if(seq[i] <= seq[i+1]) { b = i; break; }
  23. }
  24. // between b and c
  25. for(int i = b; i < seq.size(); i++) {
  26. if(seq[i] != seq[i+1]) { c = i; break; }
  27. }
  28. // between c and d
  29. for(int i = c; i < seq.size(); i++) {
  30. if(seq[i] >= seq[i+1]) { d = i; break; }
  31. }
  32.  
  33. if(a <= 0) return "NO";
  34. int diff = (seq[a] - seq[0]) / a;
  35. for(int i = 0; i < a - 1; i++) {
  36. if(seq[i+1] - seq[i] != diff) {
  37. return "NO";
  38. }
  39. }
  40.  
  41. diff = (seq[b] - seq[a]) / (b - a);
  42. for(int i = a; i < b - 1; i++) {
  43. if(seq[i+1] - seq[i] != diff) {
  44. return "NO";
  45. }
  46. }
  47.  
  48. diff = 0;
  49. for(int i = b; i < c - 1; i++) {
  50. if(seq[i+1] - seq[i] != diff) {
  51. return "NO";
  52. }
  53. }
  54.  
  55. diff = (seq[d] - seq[c]) / (d - c);
  56. for(int i = c; i < d - 1; i++) {
  57. if(seq[i+1] - seq[i] != diff) {
  58. return "NO";
  59. }
  60. }
  61. int N = seq.size();
  62. diff = (seq[N - 1] - seq[d]) / ((N - 1) - d);
  63. for(int i = d; i < (N - 1) - 1; i++) {
  64. if(seq[i+1] - seq[i] != diff) {
  65. return "NO";
  66. }
  67. }
  68.  
  69. return "YES";
  70. }
  71. };
Add Comment
Please, Sign In to add comment