Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
97342 | iui2006 | 导弹拦截问题 | C++ | Wrong Answer | 1 MS | 284 KB | 849 | 2024-11-14 00:34:26 |
#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]; for (int i = len; 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 = 1; fn[0] = hs[0]; for (int i = 1; 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; }
------Input------
181 205 471 782 1033 1058 1111
------Answer-----
7
------Your output-----
6