やるだけ

ちょっと工夫しないとTLEなるのかな?

問題文はこちら

#include <cstdio>
#include <algorithm>

using namespace std;

long n,m;

long p = 0;

char s[1000003];

int main(){


  while(19){

    long long ans = 0;

    scanf("%ld",&n);

    if(n == 0) break;

    scanf("%ld",&m);

    scanf("%s",s);


    for(int i = 0;i < m;i++){
      if(s[i] != I){
	continue;
      }else{
	int ren = 0;
	int ne = i+1,nene = i+2;
	while(nene < m){
	  if(s[ne] == O && s[nene] == I){
	    ren++;
	    ne += 2; nene += 2;
	  }else{
	    break;
	  }
	}
	ans +=max(ren - n + 1,p);
	i = ne - 1;
      }
    }

    printf("%lld
",ans);
  }
}