题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1002&cid=26931
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> s;
int n,a[21],m,i,j,t,c,b;
cin>>n;
while(n--)
{
cin>>m;
b=0;
for(i=0;i<m;i++)
{
cin>>a[i];
c=a[i];
for(j=b;j<c;j++)
s.push (1);
b=c;
if(s.top ()==1)
{
if(i==0)
printf("1");
else printf(" 1");
s.pop ();
s.push (-1);
}
else
{
t=1;
while(s.top ()==-1)
{
s.pop();
t++;
}
s.pop ();
printf(" %d",t);
while(t--)
s.push (-1);
}
}
while(s.empty()==0)
s.pop();
printf("\n");
}
return 0;
}