Submission #1186640

#TimeUsernameProblemLanguageResultExecution timeMemory
1186640JooDdae도장 모으기 (JOI14_stamps)C++20
100 / 100
106 ms71744 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const ll INF = 1e12;

int n;
ll t, dp[3030][3030], tmp[3030], u[3030], v[3030], d[3030], e[3030];

int main() {
	cin.tie(0)->sync_with_stdio(0);
	cin >> n >> t;
	for(int i=1;i<=n;i++) cin >> u[i] >> v[i] >> d[i] >> e[i];

	fill(dp[0]+1, dp[0]+n+1, INF);

	for(int i=1;i<=n;i++) {
		fill(dp[i], dp[i]+n+1, INF);

		for(int j=0;j<=n;j++) {
			tmp[j] = dp[i-1][j] + 2*t*j + t;
		}
		for(int j=0;j<=n;j++) {
			dp[i][j] = min(dp[i][j], tmp[j] + u[i]+v[i]);
			if(j) dp[i][j] = min(dp[i][j], tmp[j] + d[i]+e[i]);
		}
		for(int j=1;j<=n;j++) {
			dp[i][j] = min(dp[i][j], min(tmp[j-1], dp[i][j-1]) + d[i]+v[i]);
		}
		for(int j=n-1;j>=0;j--) {
			dp[i][j] = min(dp[i][j], min(tmp[j+1], dp[i][j+1]) + u[i]+e[i]);
		}
	}

	cout << dp[n][0] + t;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...