Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52779 | HyperSQ | 木薯与身高 | C++ | 运行超时 | 0 | 1000 MS | 58856 KB | 765 | 2022-07-20 11:53:43 |
#include <bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6+5; multiset<int> bst; int a[maxn],ans[maxn],n; int id[maxn]; bool cmp(int i,int j){ return a[i]>a[j]; } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),id[i]=i; sort(id+1,id+n+1,cmp); for(int j=1;j<=n;j++){ int i=id[j]; int s=j;while(a[id[j+1]]==a[i]&&j+1<=n) j++; //cout<<s<<" "<<j<<endl; for(int x=s;x<=j;x++){ if(bst.empty()) continue; //cout<<*bst.begin()<<endl; if(*bst.begin()>id[x]) continue; ans[id[x]]=a[*bst.begin()]-a[id[x]]; } for(int x=s;x<=j;x++){ bst.insert(id[x]); } } ll sum=0; for(int i=1;i<=n;i++){ sum+=ans[i]; //cout<<ans[i]<<endl; } printf("%lld",sum); }