Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #define MAX 100
- int x[MAX];
- unsigned n;
- unsigned LNS[MAX];
- unsigned next[MAX];
- unsigned LNS_Length(unsigned *start)
- {
- unsigned i, j;
- unsigned l;
- unsigned len = 0;
- for (i = n; i >= 1; i--) {
- for (l = 0, j = i + 1; j <= n; j++)
- if (x[j] >= x[i] && LNS[j] > l) {
- l = LNS[j];
- next[i] = j;
- }
- LNS[i] = l + 1;
- if (LNS[i] > len) {
- len = LNS[i];
- *start = i;
- }
- }
- return len;
- }
- int main() {
- while (std::cin >> n) {
- for (size_t i = 1; i <= n; i++)
- {
- std::cin >> x[i];
- }
- unsigned start;
- std::cout << LNS_Length(&start) << std::endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment