hdu1106 不知为什么wa 各种情况都试过了

hdu1106 不知为何wa各种情况都试过了#includeiostream#includestring#includevector#includealgori

hdu1106 不知为何wa 各种情况都试过了
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
string s;
bool comp(string s1,string s2){
    if(s1.length()!=s2.length()) return s1.length()<s2.length();
    for(int i=0;i<(int)s1.length();i++)
        if(s1[i]<s2[i]) return true;
        else return false;
    return true;
}
int main(){
    size_t p,pt;
    string t;
    while(cin>>s){
        vector<string> a;
        p=s.find_first_of("5");
        do{
            if(p>0){
                t.assign(s,0,p);
                pt=t.find_first_not_of("0");
                if(pt==string::npos) t="0";
                else t.assign(t,pt,t.length()-pt);
                a.push_back(t);
                if(p!=string::npos) s.assign(s,p,s.length()-p);
                else s="";
            }
            p=s.find_first_not_of("5");
            if(p!=string::npos) s.assign(s,p,s.length()-p);
            else s.assign("");
            p=s.find_first_of("5");
        }while(p!=string::npos);
        if(s.length()){ 
            t.assign(s);
            pt=t.find_first_not_of("0");
            if(pt==string::npos) t="0";
            else t.assign(t,pt,t.length()-pt);
            a.push_back(t);
        }
        sort(a.begin(),a.end(),comp);
        for(int i=0;i<(int)a.size();i++){
            if(i) printf(" ");
            cout<<a[i];
        }
        printf("\n");
        s.clear();
    }
    return 0;
}
[解决办法]
比较函数错了,应该为
bool comp(string s1,string s2){


    if(s1.length()!=s2.length()) return s1.length()<s2.length();
    for(int i=0;i<(int)s1.length();i++)
        if(s1[i]<s2[i]) return true;
        else if(s1[i]>s2[i]) return false;
    return true;
}