题目链接

https://www.dotcpp.com/oj/problem1568.html

解题思路

第一点:
我一直用string类型保存,利用string的函数去操作,总是超时。
看了学长的题解才发现其实用取模和整除操作就行。
第二点:
比较cin,cout和scanf,printf的耗时。
图片说明
图片说明
提交状态后面的两个数值分别表示内存和耗时。
第一个用cin,cout提交的,第二个是用scanf,printf提交的,时间差的不是一点半点,我用了加快cin,cout的语句依旧TLE64。
总而言之,以后改过来使用cin,cout来偷懒的毛病,尽量使用scanf,printf。

AC代码

#include<bits/stdc++.h>
#define ll long long
#define sc(x) scanf("%lld",&x)
#define pr(x) printf("%lld\n",x)
using namespace std;
const int N=1e5+100;
ll a[N],n;
bool cmp(ll b,ll c){
    ll bb=b/10000%100000000;
    ll cc=c/10000%100000000;
    if(bb==cc) return b>c;
    return bb>cc;    
}
int main(){
    sc(n);
    for(int i=1;i<=n;i++) sc(a[i]);
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++) pr(a[i]);
}