// UVa 10131 - Is Bigger Smarter?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct elephant {
int w, s, i;
};
bool operator <(elephant a, elephant b) {
return a.w < b.w || a.w == b.w && a.s < b.s;
}
int main() {
int n = 1;
elephant e[1002];
while (cin >> e[n].w >> e[n].s) {
e[n].i = n;
n++;
}
n--;
sort(e + 1, e + n + 1);
int T[1001], R[1001];
T[0] = 0;
R[0] = 0;
int s = 0;
for (int i = 1; i <= n; i++) {
T[i] = 0;
R[i] = 0;
for (int j = 1; j < i; j++) {
if (T[j] > T[i] && e[j].s > e[i].s && e[j].w < e[i].w) {
T[i] = T[j];
R[i] = j;
}
}
T[i]++;
if (T[i] > T[s])
s = i;
}
vector<int> sol;
while (s) {
sol.push_back(e[s].i);
s = R[s];
}
cout << sol.size() << endl;
for (int i = sol.size() - 1; i >= 0; i--)
cout << sol[i] << endl;
return 0;
}
Tuesday, June 16, 2015
UVa 10131 - Is Bigger Smarter?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment