| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
等做出来,就会发现巨水巨简单#include <iostream>
using namespace std;
#define abs(a) ((a) > 0 ? (a) : -(a))
typedef int ganster_info_t[3];
ganster_info_t ganster_info[100] = { { 0 } }; //0:T, 1:P, 2:S
int gansters = 0, states = 0, times = 0;
void sort()
{
for (int i = 1; i < gansters; ++i) {
for (int j = i; j > 0; --j) {
if (ganster_info[j][0] < ganster_info[j - 1][0]) {
swap(ganster_info[j][0], ganster_info[j - 1][0]);
swap(ganster_info[j][1], ganster_info[j - 1][1]);
swap(ganster_info[j][2], ganster_info[j - 1][2]);
}
}
}
for (int i = 0; i < gansters; ++i) {
if (ganster_info[i][2] > ganster_info[i][0]) {
ganster_info[i][1] = 0;
continue;
}
for (int j = i + 1; j < gansters && ganster_info[i][0] == ganster_info[j][0]; ++j) {
if (ganster_info[i][2] == ganster_info[j][2]) {
ganster_info[i][1] += ganster_info[j][1];
ganster_info[j][1] = 0;
}
}
}
}
int main()
{
cin >> gansters >> states >> times;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < gansters; ++j)
cin >> ganster_info[j][i];
sort();
int pros_max[100] = { 0 };
int final = 0;
for (int i = 0; i < gansters; ++i) {
if (ganster_info[i][1] == 0) continue;
int tmp_max = -1;
for (int j = i - 1; j >= 0; --j) {
if (pros_max[j] && ganster_info[i][0] != ganster_info[j][0] &&
ganster_info[i][0] - ganster_info[j][0] >= abs(ganster_info[i][2] - ganster_info[j][2]) &&
tmp_max < pros_max[j] + ganster_info[i][1]) {
tmp_max = pros_max[j] + ganster_info[i][1];
}
}
pros_max[i] = tmp_max == -1 ? ganster_info[i][1] : tmp_max;
final = max(pros_max[i], final);
}
cout << final << endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator