タイトル1190:大整数ソート


タイトルの説明:
N個の長さが最も長くて1000に達する数を並べ替えます.
入力:
1行目の整数Nを入力します(1<=N<=100).次のN行は行ごとに数があり、数の長さは1<=len<=1000の範囲である.各数は正数であり、接頭辞ゼロが含まれていないことを保証します.
出力:
複数組のテストデータがある可能性があり、各組のデータに対して、与えられたN個の数を小さいから大きいまで並べ替え、並べ替え後の結果を出力し、各数が1行を占める.
サンプル入力:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333

サンプル出力:
33333333
11111111111111111111111111111
2222222222222222222222222222222222

C++コード:
#include 
    #include 
    #include 
    #include 
 
    using namespace std;
 
    bool cmp(string s1,string s2)
    {
            if(s1.size()==s2.size())
            {
                    for(int i=0;i>n&&n>=1&&n<=100)
            {
                    vector vec;
                    string str;
                    for(int i=0;i>str;
                            if(str.size()>1000)return 1;
                            vec.push_back(str);
                    }
                    sort(vec.begin(),vec.end(),cmp);
                    for(vector::iterator j=vec.begin();j!=vec.end();j++)
                            cout<

最初はこの考えだったが、問題がどこにあるのか分からなかった.
C++コード(WA、本体デバッグ大丈夫):
#include
#include 
#include 
#include 
using namespace std;

struct x{
	char str[10001];
	unsigned int len;
};

int main()
{
	int N;
	x T[101];
	while(cin>>N)
	{
		for(int i=0;i>T[i].str;
			T[i].len=strlen(T[i].str);
		}//for
		x temp;
		for(int a=0;aT[b+1].len)
				{
					temp=T[b+1];
					T[b+1]=T[b];
					T[b]=temp;
				}//if
				else if(T[b].len==T[b+1].len)
				{
					int l=T[b].len;
					for(int i=0;i(T[b+1].str[i]-'0'))
						{
							temp=T[b+1];
					        T[b+1]=T[b];
					        T[b]=temp;
							break;
						}//if
					}//for
				}
			}//for b
		}//for
		for(int m=0;m