哪位大佬能帮忙看一下是哪错了
2026-08-19 19:56:19
发布于:陕西
#include<bits/stdc++.h>
using namespace std;
const int maxn = 114514;
struct stu{
int t;
int id;
}a[maxn];
bool cmp(stu a, stu b){
if(a.t != b.t){
return a.t < b.t;
}
return a.id < b.id;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
double sum = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
cin >> a[i].t;
a[i].id = i;
}
sort(a+1, a+n+1, cmp);
for(int i = 1; i < n; i++){
printf("%d ", a[i].id);
sum += i*a[n-i].t;
}
printf("%d\n", a[n].id);
printf("%.2f", sum/n);
return 0;
}
本地c++输出:3 2 7 8 9 6 10 5
291.90
此处输出:1 2 3 4 5 6 7 8 9 10
0.00
【无奈的笑了:/】
全部评论 3
可能是这个问题:当你在代码开头写下 ios_base::sync_with_stdio(false); 时,你断开了 C++ 流(cin/cout)和 C 流(scanf/printf)的同步。这会导致输入缓冲区状态不一致,cin 很可能无法正确读取到 scanf 之后的数据,导致 a[i].t 全是 0 或未初始化的值。
3小时前 来自 广东
0排队接水
3小时前 来自 陕西
0谢谢您,我关注你一下






3小时前 来自 陕西
0
谢谢3小时前 来自 陕西
0
哪题
3小时前 来自 广东
0





3小时前 来自 陕西
0













有帮助,赞一个