http://acm.hdu.edu.cn/showproblem.php?pid=2372
// 1367544 2009-05-14 19:45:52 Accepted 2372 0MS 352K 678 B C++ no way 
#include < iostream >
using   namespace  std;
const   int  N  =   105 ;
__int64 dp[N][N];
// dp[i][j]表示一第i个元素结尾的长度为j的单调序列个数
int  main()
{
    
int n,k;
    
while(cin>>n>>k)
    
{
        
if(n == 0 && k == 0)
            
break;
        
int i,j,p;
        __int64 num[N],temp;
        
for(i=1;i<=n;i++)
            scanf(
"%I64d",&num[i]);

        
for(j=2;j<=k;j++)
            
for(i=j;i<=n;i++)
                dp[i][j] 
= 0;

        
for(i=1;i<=n;i++)
            dp[i][
1= 1;

        
for(j=2;j<=k;j++)
            
for(i=j;i<=n;i++)
            
{
                
for(p=j-1;p<i;p++)
                    
if(num[i] > num[p])
                        dp[i][j] 
+= dp[p][j-1];
            }


        
for(temp=0,i=k;i<=n;i++)
            temp 
+= dp[i][k];

        printf(
"%I64d\n",temp);
    }

    
return 0;
}