• PKU3327


    WA了N次...
    #include<string.h>
    #include 
    <stdio.h>

    struct Rect
    {
        
    int w, d;
    }
    ;

    int c, w, d, cnt, p, s;
    Rect rect[
    110];
    int area[110];

    void cut()
    {
        
    int hw=rect[p].w, hd=rect[p].d ;
        s
    %=(2*(hw+hd));
        rect[cnt]
    =rect[p];
        
    if(s>0 && s<hw)
        
    {
            rect[p].w
    =s,rect[p].d=hd;
            rect[cnt].w
    =hw-rect[p].w;
        }

        
    if(s>hw && s<hw+hd)
        
    {
            rect[p].w
    =hw,rect[p].d=s-hw;
            rect[cnt].d
    =hd-rect[p].d;
        }

        
    if(s>hw+hd && s<2*hw+hd)
        
    {
            rect[p].w
    =s-hw-hd,rect[p].d=hd;
            rect[cnt].w
    =hw-rect[p].w;
        }

        
    if(s>2*hw+hd && s<2*hw+2*hd)
        
    {
            rect[p].w
    =hw,rect[p].d=s-2*hw-hd;
            rect[cnt].d
    =hd-rect[p].d;
        }

        
    //
        if(rect[p].w * rect[p].d > rect[cnt].d * rect[cnt].w)
        
    {
            Rect hr
    =rect[p];
            rect[p]
    =rect[cnt];
            rect[cnt]
    =hr;
        }
          Rect hr1=rect[p];
          int i;
          for(i=p;i<cnt-1;i++)
              rect[i]=rect[i+1];
          rect[cnt-1]=hr1;

    }


    int main()
    {
        
    while(scanf("%d%d%d"&c, &w, &d)==3)
        
    {
            
            
            
    if(c==0 && w==0 && d==0)break;
            cnt
    =1;
            
    int i, j; 
            
    for(i=0;i<110;i++)
                rect[i].d
    =rect[i].w=area[i]=0;

            rect[
    1].w=w,rect[1].d=d;

            
    for(i=1;i<=c;i++)
            
    {
                scanf(
    "%d%d",&p,&s);
                cnt
    ++;
                cut();
            }

            
    for(i=1;i<=c+1;i++)
            
    {
            
    //    printf("%d :  %d , %d  \n",i,rect[i].w,rect[i].d);
                int harea=rect[i].w * rect[i].d;
                
    for(j=i;j>=1;j--)
                
    {
                    area[j]
    =area[j-1];
                    
    if(harea>area[j])
                    
    {
                        area[j]
    =harea;
                        
    break;
                    }

                }

            }


            
    for(i=1;i<=c+1;i++)
            
    {
                
    if(i!=1)printf(" ");
                printf(
    "%d",area[i]);
            }

            printf(
    "\n");
        }

        
    return 0;
    }

  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/SQL/p/913090.html
Copyright © 2020-2023  润新知