Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <cstring>
- #include <algorithm>
- #include <string>
- #include <vector>
- #include <set>
- using namespace std;
- class FoxSequence {
- public:
- string isValid(vector <int> seq) {
- int a, b, c, d;
- // between 0 and a
- for(int i = 0; i < seq.size(); i++) {
- if(seq[i] >= seq[i+1]) { a = i; break; }
- }
- // between a and b
- for(int i = a; i < seq.size(); i++) {
- if(seq[i] <= seq[i+1]) { b = i; break; }
- }
- // between b and c
- for(int i = b; i < seq.size(); i++) {
- if(seq[i] != seq[i+1]) { c = i; break; }
- }
- // between c and d
- for(int i = c; i < seq.size(); i++) {
- if(seq[i] >= seq[i+1]) { d = i; break; }
- }
- if(a <= 0) return "NO";
- int diff = (seq[a] - seq[0]) / a;
- for(int i = 0; i < a - 1; i++) {
- if(seq[i+1] - seq[i] != diff) {
- return "NO";
- }
- }
- diff = (seq[b] - seq[a]) / (b - a);
- for(int i = a; i < b - 1; i++) {
- if(seq[i+1] - seq[i] != diff) {
- return "NO";
- }
- }
- diff = 0;
- for(int i = b; i < c - 1; i++) {
- if(seq[i+1] - seq[i] != diff) {
- return "NO";
- }
- }
- diff = (seq[d] - seq[c]) / (d - c);
- for(int i = c; i < d - 1; i++) {
- if(seq[i+1] - seq[i] != diff) {
- return "NO";
- }
- }
- int N = seq.size();
- diff = (seq[N - 1] - seq[d]) / ((N - 1) - d);
- for(int i = d; i < (N - 1) - 1; i++) {
- if(seq[i+1] - seq[i] != diff) {
- return "NO";
- }
- }
- return "YES";
- }
- };
Add Comment
Please, Sign In to add comment