1 solutions
-
0
C++ :
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> using namespace std; struct XX{ int x, y; }a[550]; bool cmp(const XX&x, const XX&y){ if (x.x + x.y != y.x + y.y){ return x.x + x.y < y.x + y.y; } } int dp[550][110]; int main(){ int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; ++i){ scanf("%d%d", &a[i].x, &a[i].y); } sort(a, a + n, cmp); int ans = 0; for (int i = 0; i < n ; ++i){ for (int k = 0; k <= m; ++k){ dp[i][k] = 1; } for (int j = 0; j < i; ++j){ if (a[i].x >= a[j].x && a[i].y >= a[j].y){ int del = a[i].x - a[j].x + a[i].y - a[j].y - 1; for (int k = 0; k <= m - del; ++k){ dp[i][k + del] = max(dp[i][k + del], dp[j][k] + del + 1); ans = max(ans, dp[i][k + del] + m - k - del); } } } } printf("%d\n", ans); return 0; }
- 1
Information
- ID
- 1187
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By