# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
660422 | Ahmed57 | Go (COCI18_go) | C++14 | 225 ms | 324404 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> v;
int m,n,k;
int dp[101][101][2001][2];
long long solve(int l,int r,int ti,int tu){
if(ti>2000)return 0;
if(l==0&&r==m)return 0;
if(dp[l][r][ti][tu]!=-1)return dp[l][r][ti][tu];
int ind = 0;
if(l+1==r){
ind = k;
}else {
if(tu==0){
ind = v[l+1][0];
}else{
ind = v[r-1][0];
}
}
long long c1 = 0;
if(l>=0){
int ne = ti+abs(v[l][0]-ind);
c1 = max(c1,solve(l-1,r,ne,0)+(ne<=v[l][2]?v[l][1]:0));
}if(r<m){
int ne = ti+abs(v[r][0]-ind);
c1 = max(c1,solve(l,r+1,ne,1)+(ne<=v[r][2]?v[r][1]:0));
}
return dp[l][r][ti][tu] = c1;
}
int main(){
cin>>n>>k>>m;
int u = m;
for(int i = 0;i<m;i++){
long long a,b,c;cin>>a>>b>>c;
v.push_back({a,b,c});
if(a>=m&&u==m){
u = i;
}
}
memset(dp,-1,sizeof dp);
cout<<solve(u-1,u,1,0);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |