这题应该不用用文件操作吧,用贪心就行了
by tyzc114514 @ 2022-08-13 14:22:30
给你我的代码,参考参考
by tyzc114514 @ 2022-08-13 14:23:04
@[godd2010](/user/764552) 这个sort用的不对,所以会WA。
因为你for循环存数据的时候 $i$ 从 $1$ 开始循环,所以sort应该是
```cpp
sort(a+1,a+n+1);
```
by Daben1 @ 2022-08-13 14:23:57
@[liuzejiang](/user/292653) 哪里用文件操作了啊
by Daben1 @ 2022-08-13 14:25:06
@[godd2010](/user/764552) 最后一个for里面i=i
by 你的洛 @ 2022-08-13 14:27:02
```
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[1005];
int id[1005];
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);//输入
id[i]=i;//记录
}
for(int i=1;i<=n;i++){
int index=i;
for(int j=i+1;j<=n;j++){
if(a[j]<a[index]||a[index]==a[j]&&id[j]<id[index])
index=j;//选择排序
}
if(index!=i){
swap(a[i],a[index]);
swap(id[i],id[index]);//顺序交换
}
}
double sum=0.0;
for(int i=1;i<=n;i++){
printf("%d ",id[i]);
sum+=a[i]*(n-i)*1.0;//最后的计算
} printf("\n");
printf("%.2lf\n",sum*1.0/n);
return 0;
}
```
by tyzc114514 @ 2022-08-13 14:27:49
@[Daben1](/user/540201) 说错了,是结构体
by tyzc114514 @ 2022-08-13 14:29:20
@[你的洛](/user/295509) 我看到了,已经调到82分了,您再看一下我改完的这个还有没有问题
```cpp
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
using namespace std;
int n;
struct ren {
int name;
long long time;
}a[10000];
bool cmp(ren a, ren b) {
return a.time < b.time;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].time;
a[i].name = i;
}
sort(a+1, a + n+1, cmp);
for (int i = 1; i <= n; i++) {
cout << a[i].name << " ";
}
cout << endl;
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += a[i].time * (n - i);
}
cout << fixed << setprecision(2) << 1.0 * sum / n;
return 0;
}
```
by Daben1 @ 2022-08-13 14:31:23
@[liuzejiang](/user/292653) 不管是什么,咱得按人家思路走,这里是解决问题的,不是教学的
by Daben1 @ 2022-08-13 14:32:38
谢
by godd2010 @ 2022-08-13 14:33:35