Div2なので不参加だけど練習。
http://codeforces.com/contest/282/problem/A
http://codeforces.com/contest/282/problem/B
A. Bit++
変数Xに対して前置・後置でインクリメント・デクリメント要求が行われるので、変数Xの最終的な値を答える。
要求の種類は4種類だけなので、それぞれに応じてXをinc/decしていけばよい。
void solve() { int f,r,i,j,k,l, x,y,ma,num,nt; char s[100]; j=GETi(); k=0; FOR(i,j) { GETs(s); if(strcmp("X++",s)==0) k++; if(strcmp("++X",s)==0) k++; if(strcmp("X--",s)==0) k--; if(strcmp("--X",s)==0) k--; } _P("%d\n",k); return; }
B. Painting Eggs
N種類の卵がある。各卵に色を塗りたいが、GとAの両者に頼む際両者の値段は異なる。
しかし両者の値段の和は常に1000である。
卵を順々に色づけする際、GとAのかかる金額の差額が500以内になるようにする場合、両者への以来方法を答える。
途中まで処理した時点で両者の金額の差が500以内の場合、次の卵をAとGのいずれかに頼むと、その結果も金額の差を500以内に抑えることができる。
よって、常に金額の差が小さくなる方を選択すればよい。
void solve() { int f,r,i,j,k,l, x,y,ma,num,nt; int N,d; N=GETi(); d=0; FOR(i,N) { GET2(&x,&y); if(abs(d+x)<=abs(d-y)) { _P("A"); d+=x; } else { _P("G"); d-=y; } } _P("\n"); return; }
まとめ
Bは問題自体は良いけど、問題文と設定が不自然すぎていまいちだな…。
おかげで意図がつかみにくかった。
もう少し自然なストーリーだといいのにな。