#include #include #include #include using namespace std; typedef long long ll; typedef pair P; typedef pair T; long long int INF = 2e18; const ll fact_table = 1200008; double Pi = 3.1415926535897932384626; priority_queue pql; priority_queue

pqp; priority_queue

bag; //big priority queue priority_queue ,greater > pqls; priority_queue ,greater

> pqps; //small priority queue //top pop ll dx[8]={1,0,-1,0,1,1,-1,-1}; ll dy[8]={0,1,0,-1,1,-1,-1,1}; char dir[] = "DRUL"; //↓,→,↑,← #define endl "\n" #ifdef ENJAPMA #undef endl #endif #define p(x) cout<=1; i--){ rfact[i-1] = rfact[i] * i; rfact[i-1] %= mod; } return;} ll c3(ll n,ll r){ return (((fact[n] * rfact[r]) % mod ) * rfact[n-r]) % mod;} */ bool multicase = false; ll n,m,num,a,b,c,d,e,h,q; ll w, k, l, r; string s[85]; ll cost[85]; ll cj[85], co[85], ci[85]; vector

Jv, Ov, Iv; vector JO, OI, JOI; ll tablej[100005], tableo[100005], tablei[100005]; void solve(){ ll K; cin >> n >> K; for(ll i=0;i> s[i] >> cost[i]; } for(ll i=0;i= K){ JOI.pb(T(P(myJ, myI), cost[i])); } } } Jv.pb(P(J, cost[i])); Ov.pb(P(O, cost[i])); Iv.pb(P(I, cost[i])); } ll k = K; for(ll i=1;i<=100000;i++){ tablej[i] = tableo[i] = tablei[i] = INF; } for(ll i=1;i<=100000;i++){ for(ll j=0;j= Jv[j].first)tablej[i] = min(tablej[i], tablej[i - Jv[j].first] + Jv[j].second); } for(ll j=0;j= Ov[j].first)tableo[i] = min(tableo[i], tableo[i - Ov[j].first] + Ov[j].second); } for(ll j=0;j= Iv[j].first)tablei[i] = min(tablei[i], tablei[i - Iv[j].first] + Jv[j].second); } } for(ll i=99999;i>=1;i--){ tablej[i] = min(tablej[i], tablej[i+1]); tableo[i] = min(tableo[i], tableo[i+1]); tablei[i] = min(tablei[i], tablei[i+1]); } ll ans = tablej[k] + tableo[k] + tablei[k]; for(ll i=0;i 0)tmp += tablej[nj]; if(no > 0)tmp += tableo[no]; if(ni > 0)tmp += tablei[ni]; ans = min(ans, tmp); } } for(ll i=0;i 0)tmp += tablej[nj]; if(ni > 0)tmp += tablei[ni]; ans = min(ans, tmp); } if(ans > INF / 2){ p(-1); }else{ p(ans); } return; } int main(){ // init(); // インタラクティブになったらここは外しましょうね!! ios::sync_with_stdio(false); cin.tie(nullptr); ll q, testcase = 1; if(multicase){ cin >> q; }else{ q = 1; } while(q--){ // pu("Case ");pu("#");pu(testcase);pu(": "); solve(); testcase++; } // solve(); return 0; }