1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);

  long long n, c;
  cin >> n >> c;

  vector<pair<long long, long long>> vec(n);
  for (long long i = 0; i < n; i++) {
    cin >> vec[i].first >> vec[i].second;
  }

  vector<long long> dp(n, 0);
  long long wynik = 0;

  for (long long i = 0; i < n; i++) {
    dp[i] = vec[i].first;
    for (long long j = 0; j < i; j++) {
      if (vec[j].first < vec[i].first) {
        long long kara = (vec[j].second != vec[i].second) ? c : 0;
        dp[i] = max(dp[i], dp[j] + vec[i].first - kara);
      }
    }
    wynik = max(wynik, dp[i]);
  }

  cout << wynik << '\n';
  return 0;
}