kmjp's blog

競技プログラミング参加記です

Codeforces #274 Div1 A. Exams

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問題だしいいのかな。