| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:zju ac到这re了帮忙看看In Reply To:zju ac到这re了帮忙看看 Posted by:daringQQ at 2006-02-06 22:28:00 > // zj1859.cpp : Defines the entry point for the console application.
> //
>
> #include <stdio.h>
> #include <memory.h>
>
> int len[1000],reach[10001];
> bool pos[1000];
>
> int min(int a,int b){
> return a<b ? a:b;
> }
> int main(int argc, char* argv[])
> {
> int length,n,sum,i,j,p;
> bool flag;
> while(scanf("%d",&length) != EOF){
> length*=100;
> memset(reach,0,sizeof(reach));
> memset(pos,false,sizeof(pos));
> reach[0]=1;
> n=1;
> while(scanf("%d",&len[n]),len[n]) n++;
> n--;
> sum=0;
> for(i=1;i<=n;i++){
> for(j=min(sum,length-len[i]);j>=0;j--)
> if(reach[j]>0 && reach[j+len[i]]==0) reach[j+len[i]]=i;
> sum+=len[i];
> if(sum>length*2) break;
> flag=false;
> for(j=sum/2;j>=0;j--)
> if(reach[j]>0 && sum-j<=length){
> flag=true;
> p=j;
> break;
> }
> if(!flag) break;
> }
> while(p>0){
> pos[reach[p]]=true;
> p-=len[reach[p]];
> }
> printf("%d\n",i-1);
> for(j=1;j<i;j++){
> if(!pos[j]) printf("port\n");
> else printf("starboard\n");
> }
> }
> return 0;
> }
在sum=0;一句处加一句p=0;即可
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator