记录编号 |
321089 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺十]数字积木 |
最终得分 |
100 |
用户昵称 |
__stdcall |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.075 s |
提交时间 |
2016-10-13 12:58:22 |
内存使用 |
2.23 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
using namespace std;
struct bigint
{
int num[500];
int size;
bool operator<( const bigint &rhs ) const
{
bigint tmp1;
bigint tmp2;
tmp1.size = tmp2.size = size+rhs.size;
for( int i = 0 ; i < size ; ++i )
{
tmp1.num[i] = num[i];
}
for( int i = 0 ; i < rhs.size ; ++i )
{
tmp1.num[i+size] = rhs.num[i];
}
for( int i = 0 ; i < rhs.size ; ++i )
{
tmp2.num[i] = rhs.num[i];
}
for( int i = 0 ; i < size ; ++i )
{
tmp2.num[i+rhs.size] = num[i];
}
for( int i = 0 ; i < tmp1.size ; ++i )
{
if( tmp1.num[i] > tmp2.num[i] )
{
return true;
}
else if( tmp1.num[i] < tmp2.num[i] )
{
return false;
}
}
return false; // equal
}
};
bigint num[1001];
int n;
string str;
int main()
{
freopen( "brick.in" , "r" , stdin );
freopen( "brick.out" , "w" , stdout );
cin >> n;
for( int i = 0 ; i < n ; ++i )
{
cin >> str;
num[i].size = str.size();
for( int j = 0 ; j < str.size() ; ++j )
{
num[i].num[j] = str[j]-'0';
}
}
sort( num , num+n );
for( int i = 0 ; i < n ; ++i )
{
for( int j = 0 ; j < num[i].size ; ++j )
{
cout << num[i].num[j];
}
}
cout << endl;
return 0;
}