poj1068(模拟)

http://poj.org/problem?id=1068

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 int stack[20001],top,b[10001];
 4 void inst(int x,int y)
 5 {
 6     int i;
 7     for(i = top+1 ; i <= top+(x-y) ; i++)
 8     stack[i] = 1;
 9     top = top+x-y+1;
10     stack[i] = 0;
11     b[x] = top;
12 }
13 int main()
14 {
15     int i,j,k,a[21],t,g,n;
16     scanf("%d", &t);
17     while(t--)
18     {
19         top = 0;
20         scanf("%d", &n);
21         a[0]=0;
22         for(i = 1;i <= n ;i++)
23         {
24             scanf("%d",&a[i]);
25             inst(a[i],a[i-1]);
26         }
27         k = 0;
28         for(i = 1 ; i <= n ; i++)
29         {
30             g = 1;
31             for(j = b[a[i]]-1 ; j >= 1; j--)
32             {
33                 
34                 if(stack[j]==1)
35                 {
36                     stack[j]=2;
37                     if(k != 0)
38                         printf(" ");
39                     printf("%d",g);
40                     k++;
41                     break;
42                 }
43                 else
44                     if(stack[j]==2)
45                         g++;
46             }
47         }
48         printf("\n");
49 
50     }
51     return 0;
52 }

 

转载于:https://www.cnblogs.com/shangyu/archive/2012/07/23/2605543.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值