CF274に参加。
ABはさっさと解けたものの、Cでしょうもない凡ミスをしてレートを落としてしまった。
http://codeforces.com/contest/480/problem/A
問題
N個の試験がある。
各試験は通常A[i]日目に受けるものだが、例外的にB[i]日目(B<A)に受けても良い。
ただし、受ける順番はすべてをA[i]日目に受けた場合でも再現できなければならない。
1日に複数の試験を受けられる場合、全部の試験を受け終わる最短日数を答えよ。
解法
まず受ける順番をA[i]の順にしなければならないので、A[i]でソートする。
後は現在の日付を見ながら、まだB[i]日を通過してないならB[i]日目、通過したならA[i]日目に受ければよい。
int N; ll A[5010],B[5010]; pair<ll,ll> P[5010]; void solve() { int i,j,k,l,r,x,y; string s; cin>>N; FOR(i,N) cin>>P[i].first>>P[i].second; sort(P,P+N); ll c=0; FOR(i,N) { if(c<=P[i].second) c=P[i].second; else c=P[i].first; } cout << c << endl; }
まとめ
あまりヒネリがないけど、A問題だしいいのかな。