#include <cstdio>
#include <map>
struct P
{
long long val;
int last_a;
};
int main()
{
int c, n, * w;
std::map<int, P> m;
long long* a;
scanf("%d %d", &n, &c);
a = new long long[n];
w = new int[n];
for (int i = 0; i < n; i++)
{
scanf("%lld %d", a + i, w + i);
}
{
int aakt = a[0];
long long h1=0, h2=0;
for (int i = 0; i < n; i++)
{
if (aakt != a[i])
{
aakt = a[i];
h1 = h2;
}
if (m[w[i]].last_a == aakt)
{
continue;
}
long long x = m[w[i]].val + a[i];
long long y = h1 + a[i] - c;
long long z = x < y ? y : x;
m[w[i]].val = z;
m[w[i]].last_a = aakt;
if (z > h2)
{
h2 = z;
}
}
printf("%lld", h2);
}
return 0;
}
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <cstdio> #include <map> struct P { long long val; int last_a; }; int main() { int c, n, * w; std::map<int, P> m; long long* a; scanf("%d %d", &n, &c); a = new long long[n]; w = new int[n]; for (int i = 0; i < n; i++) { scanf("%lld %d", a + i, w + i); } { int aakt = a[0]; long long h1=0, h2=0; for (int i = 0; i < n; i++) { if (aakt != a[i]) { aakt = a[i]; h1 = h2; } if (m[w[i]].last_a == aakt) { continue; } long long x = m[w[i]].val + a[i]; long long y = h1 + a[i] - c; long long z = x < y ? y : x; m[w[i]].val = z; m[w[i]].last_a = aakt; if (z > h2) { h2 = z; } } printf("%lld", h2); } return 0; } |
English