#include <bits/stdc++.h>
using namespace std;
int a[3005];
bool all0[3005], have100[3005];
bool visited[3005][3005];
struct node {
  int pos1, pos2, dist;
  node() {}
  node(int _pos1, int _pos2, int _dist)
      : pos1(_pos1), pos2(_pos2), dist(_dist) {}
};
int bfs(int N, int K) {
  int ret = 0;
  queue<node> Q;
  Q.push(node(0, 1, 0));
  visited[0][1] = true;
  while (!Q.empty()) {
    node aux = Q.front();
    Q.pop();
    ++ret;
    if (aux.pos2 >= N || aux.dist == K) continue;
    if (a[aux.pos1] != 100 && !all0[aux.pos2] &&
        !visited[aux.pos2][aux.pos2 + 1]) {
      Q.push(node(aux.pos2, aux.pos2 + 1, aux.dist + 1));
      visited[aux.pos2][aux.pos2 + 1] = true;
    }
    if (a[aux.pos1] != 0 && !have100[aux.pos2] &&
        !visited[aux.pos1][aux.pos2 + 1]) {
      Q.push(node(aux.pos1, aux.pos2 + 1, aux.dist + 1));
      visited[aux.pos1][aux.pos2 + 1] = true;
    }
    if (a[aux.pos1] != 0 && !all0[aux.pos2] &&
        !visited[aux.pos2 + 1][aux.pos2 + 2]) {
      Q.push(node(aux.pos2 + 1, aux.pos2 + 2, aux.dist + 1));
      visited[aux.pos2 + 1][aux.pos2 + 2] = true;
    }
  }
  return ret;
}
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
  all0[n - 1] = (a[n - 1] == 0);
  have100[n - 1] = (a[n - 1] == 100);
  for (int i = n - 2; i >= 0; --i) {
    all0[i] = (a[i] == 0 && all0[i + 1]);
    have100[i] = (a[i] == 100 || have100[i + 1]);
  }
  if (n == 1)
    printf("1\n");
  else
    printf("%d\n", bfs(n, k));
  return 0;
}
