题意很好理解,就是根据题目的要求写;所以我需要让x更小的同时让a[i]更大,这样才能满足最小的答案;用结构题记录下标就行;
所以sort一下然后累加就AC了;
AC代码:
#include<bits/stdc++.h>
using namespace std;
struct Node{
int index;
int val;
};
bool cmp(Node a,Node b){
return a.val>b.val;
}
int main(){
int n;
Node a[1050];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i].val;
a[i].index=i+1;
}
sort(a,a+n,cmp);
int x=0;
int ans=0;
for(int i=0;i<n;i++){
ans+=(a[i].val*x+1);
x++;
}
printf("%d\n",ans);
for(int i=0;i<n;i++){
printf("%d%c",a[i].index,i==n-1?'\n':' ');
}
return 0;
}