読者です 読者をやめる 読者になる 読者になる

AOJ 1035 Sleeping Cats

問題

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1035

日本語。

解法

以前、WA出したのは何故かな。 Wの大きさの配列用意して、それぞれどの猫が寝ているか見ていけばいい。

首輪でもつけるのかな

コード

int a[128], i, j, k;

int main(){
  int W, Q;
  while(scanf("%d%d", &W, &Q) && W+Q){
    memset(a, -1, sizeof(a));
    char c[2];
    int id, w;
    rep(i, Q){
      scanf("%s", c);
      if(c[0] == 's'){
    scanf("%d%d", &id, &w);
    rep(j, W-w+1){
      REP(k, j, j+w) if(a[k] != -1) break;
      if(k == j+w) break;
    }
    if(j == W-w+1){
      puts("impossible");
    }else{
      printf("%d\n", j);
      REP(k, j, j+w) a[k] = id;
    }
      }else{
    scanf("%d", &id);
    rep(j, W) if(a[j] == id) a[j] = -1;
      }
    }
    puts("END");
  }
  return 0;
}