結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-09-03 12:02:43 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,226 bytes |
| コンパイル時間 | 1,929 ms |
| コンパイル使用メモリ | 64,604 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-08 04:33:09 |
| 合計ジャッジ時間 | 2,055 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 17 WA * 23 |
ソースコード
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
int main(){
int n,c,v;
cin>>n;
cin>>c;
cin>>v;
vector<vector<int>> vv;
int n2=0;
for(int i=0; i<4; ++i){
vector<int> v1;
for(int j=0; j<v; ++j){
int a;
cin>>a;
v1.push_back(a);
if(i==0){
if(n2<a) n2=a;
}
}
vv.push_back(v1);
}
int dp[c+1][n];
for(int i=0; i<c+1; ++i){
for(int j=0; j<n; ++j){
if(j==0) dp[i][j]=0;
else dp[i][j]=SHRT_MAX;
}
}
for(int i=1; i<=n2; ++i){
for(int j=0; j<v; ++j){
int d=vv[0][j]; //1st
if(i==d){
for(int k=0; k<c+1; ++k){
int e=dp[k][d-1]; //cost before
int e2=e+vv[2][j]; //cost after
if(e2<=c){
int f=dp[e][d-1]; //time before
int g=f+vv[3][j]; //time after
int h=vv[1][j]; //2nd
for(int l=d-1; l<h; ++l){
int o=dp[e2][l];
if(o>g){
dp[e2][l]=g;
}
} //l
}
} //k
}
} //j
} //l
int z=SHRT_MAX;
for(int i=0; i<c+1; ++i){
int x=dp[i][n-1];
if(z>x) z=x;
}
if(z==SHRT_MAX) z=-1;
cout<<z<<endl;
return 0;
}