```cpp
//请忽略头文件
#include<assert.h>
#include<ctype.h>
#include<errno.h>
#include<float.h>
#include<iostream>
#include<limits.h>
#include<locale.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<wctype.h>
#include<algorithm>
#include<bitset>
#include<cctype>
#include<cerrno>
#include<clocale>
#include<cmath>
#include<complex>
#include<cstring>
#include<ctime>
#include<deque>
#include<exception>
#include<fstream>
#include<functional>
#include<limits>
#include<list>
#include<map>
#include<iomanip>
#include<ios>
#include<iosfwd>
#include<iostream>
#include<istream>
#include<ostream>
#include<queue>
#include<set>
#include<sstream>
#include<stack>
#include<stdexcept>
#include<streambuf>
#include<string>
#include<utility>
#include<vector>
#include<cwchar>
#include<complex.h>
#include<fenv.h>
#include<inttypes.h>
#include<stdbool.h>
#include<stdint.h>
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
#define INF 1<<30
using namespace std;
inline void read(long long &x)
{
char ch=getchar();x=0;
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';x=x*10+ch-'0',ch=getchar());
}
inline void write(long long x)
{
char F[200];
int tmp=x>0?x:-x ;
if(x<0)putchar('-') ;
int cnt=0 ;
while(tmp>0)
{
F[cnt++]=tmp%10+'0';
tmp/=10;
}
while(cnt>0)putchar(F[--cnt]);
}
//从这看吧
struct node
{
int t;
int bh;
}a[10000005];
long long n,sum;
bool cmp(node x,node y){if(x.t==y.t)return x.bh<y.bh;else return x.t<y.t;}
int main()
{
//std::ios::sync_with_stdio(false);
scanf("%d",&n);
for(register int i=1;i<=n;i++) scanf("%d",&a[i].t),a[i].bh=i;
sort(a+1,a+n+1,cmp);
for(register int i=1;i<=n;i++)
printf("%d ",a[i].bh),sum+=a[i].t*(n-i);
printf("\n%.2lf\n",double(sum)/double(n));
return 0;
}
/*
我表示看不出来哪错了,把数据下载下来,发现你的输出是 nan?
蒟蒻表示十分的不明白
*/
by Dovе @ 2019-08-26 09:28:47
谢大佬,把avg改double就过了
by 被jc的lmk @ 2019-08-27 08:25:35