土下座しながら探索中

主に競技プログラミング

UVa 11683 : Laser Sculpture

UVa演習 2014/6/8 (日) 問4

問題リンク:http://uva.onlinejudge.org/external/116/11683.html

問題概要:
H*Wの長方形があり、その中に収まるような1つ以上のオブジェクトの形が与えられる
レーザーが上からその長方形を削っていくのだが、何回レーザーが発射されるか

解法:
1つ前の高さと比べて、より深くなっているのであればその差分だけ答えに加える

コード:

#include<bits/stdc++.h>

#define REP(i,s,n) for(int i=s;i<n;i++)
#define rep(i,n) REP(i,0,n)

using namespace std;

int main(){
  int H,W;
  while( cin >> H >> W, H){
    int ans = 0, len = 0, tmp;
    rep(i,W) {
      cin >> tmp;
      tmp = H - tmp;
      if( len < tmp ) ans += tmp - len;
      len = tmp;
    }
    cout << ans << endl;
  }
  return 0;
}