Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int INF = 1000000000;
- int main()
- {
- int n, m;
- cin >> n >> m;
- vector <pair<int, int> > a(n);
- vector <int> ini(n), fin(n);
- for(int i=0; i<n; i++)
- {
- cin >> a[i].first >> a[i].second;
- ini[i] = a[i].first-a[i].second;
- fin[i] = a[i].first+a[i].second;
- }
- vector <int> DP(m+1, INF);
- DP[0] = 0;
- for(int i=1; i<=m; i++)
- {
- for(int j=0; j<n; j++)
- {
- if(ini[j] <= i && i <= fin[j])
- {
- DP[i] = min(DP[i], DP[i-1]);
- }
- else
- {
- if(i < ini[j])
- {
- DP[i] = min(DP[i], DP[i-1]+ini[j]-i);
- }
- else
- {
- int x = i-fin[j];
- DP[i] = min(DP[i], DP[max(0, ini[j]-x-1)]+x);
- }
- }
- }
- }
- cout << DP[m] << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment