#include <bits/stdc++.h> using namespace std; #define ll long long ll dp[500002]; array<ll,2> wej[500002]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,c; cin >> n >> c; for (ll i = 1; i<=n; i++)cin >> wej[i][0] >> wej[i][1]; ll iter = n; ll mx=0; while(iter>0){ ll A = wej[iter][0]; set<ll> to_update; while(iter>0 && wej[iter][0]==A)to_update.insert(wej[iter--][1]); ll tmp=mx; for (auto u : to_update){ dp[u]=max(dp[u]+A,tmp+A-c); mx=max(mx,dp[u]); } } cout << mx << '\n'; }
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 | #include <bits/stdc++.h> using namespace std; #define ll long long ll dp[500002]; array<ll,2> wej[500002]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,c; cin >> n >> c; for (ll i = 1; i<=n; i++)cin >> wej[i][0] >> wej[i][1]; ll iter = n; ll mx=0; while(iter>0){ ll A = wej[iter][0]; set<ll> to_update; while(iter>0 && wej[iter][0]==A)to_update.insert(wej[iter--][1]); ll tmp=mx; for (auto u : to_update){ dp[u]=max(dp[u]+A,tmp+A-c); mx=max(mx,dp[u]); } } cout << mx << '\n'; } |