
6 5 1 4 1 6 1 7 2 7 2 8 3 0
4
//============================================================================
// Name : problemD.cpp
// Author : vit
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int c[100001][11];
int n, x, t, i, j;
int cur;
int maxtime;
int temp;
int compare(int &a, int &b, int &c) {
temp = a;
if (b > temp)
temp = b;
if (c > temp)
temp = c;
return temp;
}
int main() {
while (cin >> n && n != 0) {
maxtime = 0;
memset(c, 0, sizeof(c));
for (i = 0; i < n; i++) {
scanf("%d %d", &x, &t);
if (t > maxtime)
maxtime = t;
c[t][x]++;
}
for (i = maxtime - 1; i >= 0; i--) {
for (j = 0; j <= 10; j++) {
if (j == 0) {
c[i][j] += max(c[i + 1][j], c[i + 1][j + 1]);
} else if (j == 10) {
c[i][j] += max(c[i + 1][j], c[i + 1][j - 1]);
} else {
c[i][j] = c[i][j] + compare(c[i + 1][j - 1], c[i + 1][j],
c[i + 1][j + 1]);
}
}
}
cout << c[0][5] << endl;
}
return 0;
}
原文:http://blog.csdn.net/svitter/article/details/23045743