55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
#include <iostream>
|
|
#include <vector>
|
|
|
|
bool validate_arithmetic(const std::vector<bool>& bucket) {
|
|
if (bucket.size() <= 1) { return false; }
|
|
int previous_idx = -1, distance = -1;
|
|
for (int i = 0; i < bucket.size(); i++) {
|
|
if (!bucket[i]) { continue; }
|
|
if (previous_idx == -1) {
|
|
previous_idx = i;
|
|
continue;
|
|
}
|
|
if (distance == -1) {
|
|
distance = i - previous_idx;
|
|
}
|
|
if (i - previous_idx != distance) {
|
|
return false;
|
|
}
|
|
previous_idx = i;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
int clac_ans(const std::vector<int>& nums) {
|
|
if (nums.size() == 1) { return 0; }
|
|
std::vector<bool> bucket_begin(nums.size(), false);
|
|
std::vector<bool> bucket_end(nums.size(), true);
|
|
|
|
int ans = 0;
|
|
for (int i = 0; i < nums.size(); i++) {
|
|
bucket_begin[nums[i]] = true;
|
|
bucket_end[nums[i]] = false;
|
|
if (validate_arithmetic(bucket_begin) && validate_arithmetic(bucket_end)) {
|
|
ans++;
|
|
std::clog << i << std::endl;
|
|
}
|
|
}
|
|
return ans - 1;
|
|
}
|
|
|
|
int main() {
|
|
std::ios::sync_with_stdio(false);
|
|
std::cin.tie(nullptr);
|
|
|
|
int n;
|
|
std::cin >> n;
|
|
while (std::cin >> n) {
|
|
std::vector<int> nums(n);
|
|
for (int i = 0; i < n; i++) { std::cin >> nums[i], nums[i]--; }
|
|
std::cout << clac_ans(nums) << std::endl;
|
|
}
|
|
|
|
return 0;
|
|
}
|