Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

有同学帮我看看哪儿不对吗?example都通过了,就是wrong answer

Posted by scy at 2005-09-13 21:58:53 on Problem 2614
/*先按min从大到小排序,尽可能的先装满min,再把remain依次分配给各个瓶子,直到装满,
如果所有的都装满,还有剩余的就输出remain,但是如果还有没装满的就表示没有剩余了*/ 

#include<iostream>
using namespace std;

 typedef struct node{
    float min;
    float max;
    int n;
}NODE;
NODE sizes1[101];

       
int main()
{
    long amount;
    int num;
    float minimal,maximal;
    char c;
    while(cin>>c)
    {
        cin.putback(c);
        cin>>amount>>num;
        if(amout==0){cout<<0<<end;continue;}
        for(int i=1;i<=num;i++)
{cin>>minimal>>maximal;sizes1[i].min=minimal/1000;sizes1[i].max=maximal/1000;sizes1[i].n=0;}
      
        //按min的大小从大到小排列
        for(i=1;i<num;i++)
        {
             minimal=sizes1[i].min;
             int j=i;
            for(int k=i+1;k<=num;k++)
            {
                if(sizes1[k].min>minimal){minimal=sizes1[k].min;j=k;}
            }
            NODE t;
            t=sizes1[i];
            sizes1[i]=sizes1[j];sizes1[j]=t;
        }
        float remain=0,contain=0;
        for(i=1;i<=num;i++)
        {
            while(1)
            { 
                contain+=sizes1[i].min;
                remain=amount-contain;
                sizes1[i].n++;
                if(remain>=sizes1[i].min)continue;
                else 
                {
                    if(remain<0){contain-=sizes1[i].min;remain+=sizes1[i].min;sizes1[i].n--;}
                    break;
                }    
            }
        }
        for(i=1;i<=num;i++)
        {
            while(sizes1[i].n>0)
            {
                remain=remain-(sizes1[i].max-sizes1[i].min);
                if(remain>0)sizes1[i].n--;
                else        break;
            }
            if(remain<=0){remain=0;break;}
        }
        remain=remain*1000;
        cout<<remain<<endl;
    }                
    return 0;
}    
           

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator