www.pudn.com > HOJ10054.rar > 10054-2.c
#include#define N 1024 int main() { int data[N], dat1[N], dat2[N], mask[N]; int i = 0; int j, n, temp; //正确输入法: /*for(n = 0; EOF != scanf("%d", &data[n]); ++n) ;*/ //错误(超时)输入法 char ch; do { scanf("%d", &data[i++]); }while((ch = getchar()) != '\n'); n = i; for(i = 0; i < n; i++) { dat1[i] = 1; } int m1 = 0; int m2 = 0; for (i = n - 1; i >= 0; i--) { for (j = i + 1; j < n; ++j) { if (data[i] >= data[j] && dat1[i] < 1 + dat1[j]) dat1[i] = 1 + dat1[j]; } } for (i = 0; i < n; i++) { if (m1 < dat1[i]) m1 = dat1[i]; } dat2[0] = 30001; m2 = 1; for (i = 0; i < n; ++i) { temp = 1; for (j = 0; j < m2; j++) { if (dat2[j] > data[i]) { dat2[j] = data[i]; temp = 0; break; } } if (temp) dat2[m2++] = data[i]; } printf("%d %d\n", m1, m2); system("pause"); return 0; }