# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
660422 | Ahmed57 | Go (COCI18_go) | C++14 | 225 ms | 324404 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |