因为我平时不写快读,但是这题要用快读就临时写了一个,但是奇怪地WA了#4
#include<queue>
#include<iostream>
using namespace std;
bool vn;
char qrc;
int _rint;
int readint(){ //快读
vn=false,_rint=0;
while(qrc=getchar()){
if((qrc<'0'||qrc>'9')&&vn) return _rint;
_rint=_rint*10+(qrc-'0'),vn=true;
}
}
int main(){
ios::sync_with_stdio(false);
int n,cnt[100001]={0},st[10000000],idx=0;
n=readint();
for(int i=0;i<n;i++){
int a;
a=readint();
cnt[a]++;
}
n=0;
for(int i=1;i<=100000;i++) for(int j=0;j<cnt[i];j++) st[n++]=i;
long long ans=0;
queue<long long> q;
for(int i=1;i<n;i++){
long long a1,a2;
if(q.empty()||(idx<n&&st[idx]<=q.front())) a1=st[idx++];
else{
a1=q.front();
q.pop();
}
if(q.empty()||(idx<n&&st[idx]<=q.front())) a2=st[idx++];
else{
a2=q.front();
q.pop();
}
ans+=a1+a2;
q.push(a1+a2);
}
cout<<ans;
return 0;
}
下载测试数据后发现无论手动输入还是复制再回车都能得到正确答案,但是在洛谷评测时输出了错误结果,发现如果将最后一个数字改为0输出结果与评测时的结果一致,初步判断是最后一个数据没有成功输入。求调qwq!