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:possibly a little too late...In Reply To:possibly a little too late... Posted by:frkstyc at 2007-04-09 20:57:49 This is my new code and its gave me WA again!!! #include<iostream> using namespace std; void print(); void replace(int cur[],int index,int noof); void gene(int cur[],int curt[],int index,int noof); int n,m,r,flag,best[4],stamps[25],best_index,best_noof,tie; int main() { while(!cin.eof()) { cin>>r; if(r!=0&&!flag) { stamps[m++]=r; continue; } if(r!=0&&flag) { n=r; int cur[4]={0},curt[25]={0},index=0,noof=0; gene(cur,curt,index,noof); print(); for(int i=0;i<4;i++){best[i]=0;} best_noof=0,best_index=0,tie=0; continue; } if(!flag) { for(int i=0;i<m-1;i++) { for(int j=0;j<m-1;j++) { if(stamps[j]>stamps[j+1]) { r=stamps[j]; stamps[j]=stamps[j+1]; stamps[j+1]=r; } } } } if(flag) { m=0; } flag=!flag; } return 0; } void gene(int cur[],int curt[],int index,int noof) { if(n==0) { // process the solution // //for(int i=0;i<index;i++)cout<<stamps[cur[i]]<<" ";cout<<endl; //for(int i=0;i<index;i++)cout<<cur[i]+1<<" ";cout<<endl; //cout<<noof<<endl; if(noof>best_noof) { replace(cur,index,noof);return; } else { if(noof==best_noof) { if(index<best_index) { replace(cur,index,noof);return; } else { if(index==best_index) { if(stamps[cur[index-1]]>stamps[best[best_index-1]]) { replace(cur,index,noof);return; } else { if(stamps[cur[index-1]]==stamps[best[best_index-1]]) { tie=1;return; } } } } } } return; } if(index<4) { for(int i=0;i<m&&stamps[i]<=n;i++) { if(index==0||i>=cur[index-1]) { noof+=!curt[i]++; cur[index]=i; n-=stamps[i]; gene(cur,curt,index+1,noof); noof-=!(--curt[i]); n+=stamps[i]; } } } } void replace(int cur[],int index,int noof) { for(int i=0;i<index;i++)best[i]=cur[i]; best_index=index; best_noof=noof; tie=0; } void print() { if(!best_noof) { cout<<n<<" ---- none"<<endl;return; } if(tie) { cout<<n<<" ("<<best_noof<<"): tie"<<endl;return; } cout<<n<<" ("<<best_noof<<"): "; for(int i=0;i<best_index;i++) { cout<<stamps[best[i]]<<" "; } cout<<endl; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator