#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,c;
scanf("%d%d", &n, &c);
int klocki[n][2];
int maxSize = 0;
int maxSizeCount = 0;
for(int i = 0; i < n; i++){
scanf("%d%d", &klocki[i][0], &klocki[i][1]);
if(klocki[i][0] > maxSize){
maxSize = klocki[i][0];
maxSizeCount = 0;
}
maxSizeCount++;
}
int maxScore = 0;
for(int i = 0; i < maxSizeCount; i++){
int score = klocki[n-1-i][0];
int lastBlockType = klocki[n-1-i][1];
for(int j = n-1- maxSizeCount; j > -1; j--){
if(klocki[j][0] > c){
score+=klocki[j][0];
if(lastBlockType != klocki[j][1]){
score-=c;
}
lastBlockType = klocki[j][1];
}
else if(lastBlockType == klocki[j][1]){
score+=klocki[j][0];
}
}
if(score > maxScore){
maxScore = score;
}
}
printf("%d", maxScore);
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 | #include <iostream> #include <cstdio> using namespace std; int main() { int n,c; scanf("%d%d", &n, &c); int klocki[n][2]; int maxSize = 0; int maxSizeCount = 0; for(int i = 0; i < n; i++){ scanf("%d%d", &klocki[i][0], &klocki[i][1]); if(klocki[i][0] > maxSize){ maxSize = klocki[i][0]; maxSizeCount = 0; } maxSizeCount++; } int maxScore = 0; for(int i = 0; i < maxSizeCount; i++){ int score = klocki[n-1-i][0]; int lastBlockType = klocki[n-1-i][1]; for(int j = n-1- maxSizeCount; j > -1; j--){ if(klocki[j][0] > c){ score+=klocki[j][0]; if(lastBlockType != klocki[j][1]){ score-=c; } lastBlockType = klocki[j][1]; } else if(lastBlockType == klocki[j][1]){ score+=klocki[j][0]; } } if(score > maxScore){ maxScore = score; } } printf("%d", maxScore); return 0; } |
English