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; 
}