Problem:A list of non negative integers will be provided, arrange the numbers in such a way that they form the largest number possible.
Example:
From a list : 9 30 31 4 10 ; Largest number formed : 94313010.
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
//vector<string> vb;
string vb[105];
int n;
bool cmp(string a,string b)
{
string p=a;
p.append(b);
string q=b;
q.append(a);
for(int i=0;i<p.size();i++)
{
if((p[i]-'0')<(q[i]-'0'))
return 1;//if a<b
if((p[i]-'0')>(q[i]-'0'))
return 0;//if b<a
}
return 1;
}
void _sort()
{
string tmp;
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(cmp(vb[j],vb[j+1])==0)
{
tmp=vb[j];
vb[j]=vb[j+1];
vb[j+1]=tmp;
}
}
}
}
int main() {
//code
int t,a;
string crnt,prev;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a);
prev="";
if(a==0)
prev.append(1u,'0');
else
{
prev="";
crnt="";
while(a)
{
crnt.append(1u,(a%10)+'0');
a/=10;
crnt.append(prev);
prev=crnt;
crnt="";
}
}
vb[i]=prev;
}
_sort();
for(int i=n-1;i>=0;i--)
cout<<vb[i];
cout<<"\n";
}
return 0;
}