zoj 3384 Yuyuko and Youmu

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3384

 

#include <stdio.h>

 

#define MAXN 1002

 

int n;

struct node
{
    int need,most,remained;
    int prepare;
};
node day[MAXN];

int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        int i,j;
        for(i=0; i<n; i++)
        {
            scanf("%d",&day[i].need);
        }
        for(i=0; i<n; i++)
        {
            scanf("%d",&day[i].most);
            day[i].remained=day[i].most-day[i].need;
            if(day[i].remained>=0) day[i].prepare=day[i].need;
            else day[i].prepare=day[i].most;
        }
        bool ok=true;
        for(i=0; i<n; i++)
        {
            if(day[i].remained<0)
            {
                int t=-day[i].remained;
                for(j=i-1; j>=0; j--)
                {
                    if(day[j].remained>=t)
                    {
                        day[j].prepare+=t;
                        day[j].remained-=t;
                        t=0;
                        break;
                    }
                    else
                    {
                        day[j].prepare+=day[j].remained;
                        t-=day[j].remained;
                        day[j].remained=0;
                    }
                }
                if(t>0)
                {
                    ok=false;
                    break;
                }
                else
                    day[i].remained=0;
            }
        }
        if(!ok) printf("Myon\n");
        else
        {
            bool first=true;
            for(i=0; i<n; i++)
            {
                if(first)
                {
                    first=false;
                    printf("%d",day[i].prepare);
                }
                else printf(" %d",day[i].prepare);
            }
            printf("\n");
        }
    }
    return 0;
}

 

posted @ 2010-08-22 21:49  菜到不得鸟  阅读(144)  评论(0)    收藏  举报