| ||||||||||
| 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:这里的数据都过了,还是WA,想不明白,有谁给一下测试数据In Reply To:这里的数据都过了,还是WA,想不明白,有谁给一下测试数据 Posted by:BJ051155 at 2007-07-24 11:17:17 > #include <iostream>
> #include <string.h>
> using namespace std;
> int cmp(const void* a,const void* b)
> {
> return *(char *)b-*(char *)a;
> }
> int main(int argc, char* argv[])
> {
> bool sign=0;
> char a[1005],div0[1005],div1[1005],div2[1005];
> cin>>a;
> qsort(a,strlen(a),sizeof(a[0]),cmp);
> int count0=0,count5=0,p=0,q=0,r=0;
> for(int i=0;i<strlen(a);i++)
> {
> if(a[i]=='0')
> count0++;
> if(a[i]=='5')
> count5++;
> }
> if(!count0&&!count5)
> cout<<"impossible"<<endl;
> else
> {
> for(i=0;i<strlen(a);i++)
> {
> if((a[i]-48)%3==0)
> div0[r++]=a[i];
> if((a[i]-48)%3==1)
> div1[p++]=a[i];
> if((a[i]-48)%3==2)
> {
> if(a[i]=='5'&&!sign&&!count0)
> {
> sign=1;
> continue;
> }
> div2[q++]=a[i];
> }
> }
> if(count0)
> {
> if(p%3==1&&q%3==0)
> p--;
> if(p%3==2&&q%3==0)
> q--;
> if(p%3==2&&q%3==1)
> p--;
> if(p%3==0&&q%3==1)
> q--;
> if(p%3==1&&q%3==2)
> q--;
> if(p%3==0&&q%3==2)
> p--;
> if(((p==0&&q==0)||q<0||p<0)&&r==count0)
> {
> cout<<"0"<<endl;
> return 0;
> }
> }
> else
> {
> if(q==0)
> {
> if(p==0)
> {
> cout<<"impossible"<<endl;
> return 0;
> }
> if(p%3==2)
> p--;
> else
> {
> if(p%3==0)
> p-=2;
> }
> }
> else
> {
> if(p==0)
> {
> if(q%3==1)
> q-=2;
> else
> {
> if(q%3==0)
> q-=1;
> }
> if(q<0)
> {
> cout<<"impossible"<<endl;
> return 0;
> }
> }
> else
> {
> if(p%3==1&&(q+1)%3==0)
> p--;
> if(p%3==2&&(q+1)%3==0)
> q--;
> if(p%3==2&&(q+1)%3==1)
> p--;
> if(p%3==0&&(q+1)%3==1)
> q--;
> if(p%3==1&&(q+1)%3==2)
> q--;
> if(p%3==0&&(q+1)%3==2)
> p--;
> }
> }
> }
> int p1=0,q1=0,r1=0;
> while(p1<p&&q1<q&&r1<r)
> {
> if(div1[p1]>div2[q1]&&div1[p1]>div0[r1])
> cout<<div1[p1++];
> else
> if(div2[q1]>div0[r1])
> cout<<div2[q1++];
> else
> cout<<div0[r1++];
> }
> if(p1==p)
> {
> while(q1<q&&r1<r)
> {
> if(div2[q1]>div0[r1])
> cout<<div2[q1++];
> else
> cout<<div0[r1++];
> }
> while(q1<q)
> cout<<div2[q1++];
> while(r1<r)
> cout<<div0[r1++];
> }
> if(q1==q)
> {
> while(p1<p&&r1<r)
> {
> if(div1[p1]>div0[r1])
> cout<<div1[p1++];
> else
> cout<<div0[r1++];
> }
> while(p1<p)
> cout<<div1[p1++];
> while(r1<r)
> cout<<div0[r1++];
> }
> if(r1==r)
> {
> while(p1<p&&q1<q)
> {
> if(div1[p1]>div2[q1])
> cout<<div1[p1++];
> else
> cout<<div2[q1++];
> }
> while(p1<p)
> cout<<div1[p1++];
> while(q1<q)
> cout<<div2[q1++];
> }
> if(sign)
> cout<<"5";
> cout<<endl;
>
> }
> return 0;
> }
>
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator