제출 #82835

#제출 시각아이디문제언어결과실행 시간메모리
82835ngot23Go (COCI18_go)C++11
40 / 100
44 ms1640 KiB
#include<bits/stdc++.h> #define rep(i, a, b) for(int i=(a) ; i<=(b) ; ++i) #define Task "" using namespace std; const int inf=1000000000; struct data { int p, val, t; bool operator < (const data &X) const { return t<X.t; } } e[105]; int dp[105][2001], n, m, k, maxt; void MAX(int &a, int b) { a=max(a, b); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen(Task".inp", "r", stdin); //freopen(Task".out", "w", stdout); cin >> n >> k >> m; rep(i, 1, m) { int pos, val, t; cin >> pos >> val >> t; e[i]={pos, val, t}; } sort(e+1, e+m+1); maxt=e[m].t; rep(i, 0, m) rep(j, 0, maxt) dp[i][j]=-inf; e[0]={k, 0, 0}; dp[0][0]=0; rep(i, 1, m) rep(t, 0, maxt) rep(j, 0, i-1) { int dis=abs(e[i].p-e[j].p); if(t<dis||dp[j][t-dis]==-inf) continue; if(t>=e[i].t) MAX(dp[i][t], dp[j][t-dis]); else MAX(dp[i][t], dp[j][t-dis]+e[i].val); } int ans=0; rep(i, 1, m) rep(j, 0, maxt) MAX(ans, dp[i][j]); cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...