문제

링크

풀이

#include <iostream>
#include <vector>
using namespace std;
 
int one(int c, const vector<int> &h) {
  int ret = c;
  for (int i=3; i<c; i++) ret += (h[i] == h[i-1] && h[i-1] == h[i-2] && h[i-2] == h[i-3]);
  return ret;
}
 
int two(int c, const vector<int> &h) {
  int ret = 0;
  for (int i=1; i<c; i++) ret += (h[i] == h[i-1]);
  return ret;
}
 
int three(int c, const vector<int> &h) {
  int ret = 0;
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] && h[i-1] + 1 == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] == h[i] + 1);
  return ret;
}
 
int four(int c, const vector<int> &h) {
  int ret = 0;
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] + 1 && h[i-1] == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] + 1 == h[i]);
  return ret;
}
 
int five(int c, const vector<int> &h) {
  int ret = 0;
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] && h[i-1] == h[i]);
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] + 1 && h[i-1] + 1 == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] + 1 == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] == h[i] + 1);
  return ret;
}
 
int six(int c, const vector<int> &h) {
  int ret = 0;
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] && h[i-1] == h[i]);
  for (int i=2; i<c; i++) ret += (h[i-2] + 1 == h[i-1] && h[i-1] == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] == h[i] + 2);
  return ret;
}
 
int seven(int c, const vector<int> &h) {
  int ret = 0;
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] && h[i-1] == h[i]);
  for (int i=2; i<c; i++) ret += (h[i-2] == h[i-1] && h[i-1] == h[i] + 1);
  for (int i=1; i<c; i++) ret += (h[i-1] == h[i]);
  for (int i=1; i<c; i++) ret += (h[i-1] + 2 == h[i]);
  return ret;
}
 
void solve(void) {
  int c, p; cin >> c >> p;
  vector<int> h(c);
  for (int i=0; i<c; i++) cin >> h[i];
 
  switch (p) {
    case 1: cout << one(c, h); break;
    case 2: cout << two(c, h); break;
    case 3: cout << three(c, h); break;
    case 4: cout << four(c, h); break;
    case 5: cout << five(c, h); break;
    case 6: cout << six(c, h); break;
    case 7: cout << seven(c, h); break;
  }
}
 
int main(void) {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
 
  solve();
  return 0;
}