2009-01-17
SRM366 Div1 Easy: ChangingSounds
231.62点。(7'55") // Passed System Test
変数名を打ち込む時間が勿体ない。使ってないマクロを消す時間が勿体ない。
class ChangingSounds { public: int maxFinal(vector<int> changeIntervals, int beginLevel, int maxLevel) { int n=sz(changeIntervals); bool lev[2][maxLevel+1]; rep(i,maxLevel+1) lev[0][i]=lev[1][i]=false; lev[0][beginLevel]=true; rep(s,n){ int ci=changeIntervals[s]; rep(i,maxLevel+1) lev[(s+1)%2][i]=false; rep(i,maxLevel+1) { if(lev[s%2][i]){ if(i+ci<=maxLevel) lev[(s+1)%2][i+ci]=true; if(i-ci>=0) lev[(s+1)%2][i-ci]=true; } } } for(int i=maxLevel;i>=0;i--){ if(lev[n%2][i]) return i; } return -1; } };