Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
97344 | iui2006 | 导弹拦截问题 | C++ | Accepted | 1 MS | 280 KB | 835 | 2024-11-14 00:38:21 |
#define _CRT_SECURE_NO_WARNINGS #include <math.h> #include <vector> #include <algorithm> #include <iostream> using namespace std; int hs[100001] = { }; int fn[100001] = { 50001 }; int fm[100001] = {}; int main() { int len = 0; while (scanf("%d", &hs[len++]) != EOF) if (getchar() == '\n') break; int maxm = 0; fm[0] = hs[len - 1]; for (int i = len - 1; i >= 0; i--){ int j = 0; for (; j < maxm; j++) { if (hs[i] <= fm[j]) { fm[j] = hs[i]; break; } } if (j == maxm)fm[maxm++] = hs[i]; } int maxn = 0; for (int i = 0; i < len; i++){ int j = 0; for (; j < maxn; j++){ if (hs[i] <= fn[j]) { fn[j] = hs[i]; break; } } if (maxn == j)fn[maxn++] = hs[i]; } printf("%d\n", maxn); return 0; }