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
#include <cstdio>
long long a[500005];
int w[500005];
long long maks[500005];

int main(){
    int n;
    long long kara;
    long long naj = 0;
    bool debug = false;
    scanf("%d %lld",&n, &kara);
    for(int i=0; i<n; i++){
        scanf("%lld %d",&a[i], &w[i]);
        maks[i] = a[i];

        for(int j=0; j<i; j++){
            if( a[i] != a[j]){
                if( w[i] == w[j] ){
                    if( maks[i] < maks[j] + a[i] )
                        maks[i] = maks[j] + a[i];
                } else {
                     if( maks[i] < maks[j] + a[i] - kara )
                        maks[i] = maks[j] + a[i] - kara;
                }
            }
        }
        if(naj < maks[i])
            naj = maks[i];
    }
    if(debug)
        for( int i=0; i<n; i++){
            printf("%d %d - %lld\n", a[i], w[i], maks[i]);
        }
    printf("%lld\n",naj);
    return 0;
}