Codeforces 140 D. New Year Contest
問題
n問からなるコンテストがある。
コンテストはPM 6:00からAM 6:00までの間行われる。
まず最初に、10分間かけて全ての問題に目を通す。
それぞれの問題を解くのにかかる時間はa[i]である。
問題を送信すると、「AM 0:00との時刻の差の分間」ぶんだけペナルティが課せられる。
問題はどの順序で解いてもよく、解き終えた問題はいつでも送信することができる。
最大で解ける問題の数および、そのときのペナルティを答えよ。
解ける問題数がタイの解き方が複数ある場合、ペナルティを最小にせよ。
制約条件
n≦100
a[i]≦720
方針
greedy.
簡単な方から問題を解けるだけとき、
AM 0:00より早く終わったものはAM 0:00になった瞬間に送り、それより後に解き終わったものは、終わった瞬間に送信する。
ソースコード
void run(){ int n,a[100]; cin>>n; rep(i,n)cin>>a[i]; sort(a,a+n); int sum=10,ans=0,pena=0; rep(i,n)if(sum+a[i]<=720){ sum+=a[i]; ans++; pena+=max(0,sum-360); } cout<<ans<<" "<<pena<<endl; }