说实话 这道题 写成原创 我是有点 害羞的 因为这个 比赛是我们 三个学长 都ac了 但是 想法都不一样 有一个学长是 优先队列 有个学长是 用了
stable_sort(这个函数比 sort 快 具体好像是因为 这个在相同元素的情况下 相同 ) 然后有个学长 没用结构体然后排序 因为我那个学长说 结构体 浪费时间 第一次 听说sort 浪费时间 结构体 也浪费时间的 。。。。
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <math.h>
using namespace std;
const int n=1e6+100;
int p[n];
string a[n],b[n],c[n];
bool cmp(int x,int y)
{
if(c[x]==c[y])
return a[x]<a[y];
return c[x]>c[y];
}
int main()
{
int m;
scanf("%d",&m);
for(int i=0;i<m;i++)
{ p[i]=i;
cin>>a[i]>>b[i];
c[i]=b[i];
for(int j=b[i].size()-1;j>=0;j--)
{
if(c[i][j]=='0')
continue;
c[i].erase(j+1,b[i].size()-j+1);
break;
}
}
stable_sort(p,p+m,cmp);
for(int i=0;i<m;i++)
{
cout<<a[p[i]]<<" "<<b[p[i]]<<endl;
}
return 0;
}
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
string mane;
string coer;
string zhen;
} a[2000010];
int cmp(node a,node b)
{
if(a.zhen==b.zhen)
{
return a.mane<b.mane;
}
return a.zhen>b.zhen;
}
int main()
{
int n,j,k,i;
cin>>n;
for(i=0; i<n; i++)
{
cin>>a[i].mane>>a[i].zhen;
a[i].coer=a[i].zhen;
for(j=a[i].zhen.size()-1; j>=0; j--)
{
if(a[i].zhen[j]=='0')
{
a[i].zhen.erase(a[i].zhen.begin()+j);
}
else
break;
}
}
stable_sort(a,a+n,cmp);
for(i=0; i<n; i++)
{
cout<<a[i].mane<<" "<<a[i].coer<<endl;
}
}