結果
| 問題 |
No.798 コレクション
|
| コンテスト | |
| ユーザー |
ikd
|
| 提出日時 | 2018-08-07 15:37:38 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 650 bytes |
| コンパイル時間 | 1,054 ms |
| コンパイル使用メモリ | 79,376 KB |
| 実行使用メモリ | 18,944 KB |
| 最終ジャッジ日時 | 2024-06-28 16:53:59 |
| 合計ジャッジ時間 | 1,774 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 15 WA * 8 |
ソースコード
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)
int main(){
int n; cin>> n;
struct Item{int a, b;};
vector<Item> items(n);
rep(i, n) cin>> items[i].a>> items[i].b;
sort(items.begin(), items.end(), [&](const Item &l, const Item &r){
return l.b>r.b;
});
const int inf=1e9;
vector<vector<int>> dp(n+1, vector<int>(n+1, inf));
dp[0][0]=0;
for(int i=1; i<=n; i++)for(int j=0; j<=i; j++){
dp[i][j]=min(dp[i][j], dp[i-1][j]);
if(j>0) dp[i][j]=min(dp[i][j], dp[i-1][j-1]+items[i-1].a+items[i-1].b*(j-1));
}
cout<< dp[n][n-n/3]<< endl;
return 0;
}
ikd