1 条题解
-
0
O(n logn)做法
#include<bits/stdc++.h> #define ll long long #define un unsigned #define int long long #define db double #define inf 1000000000000000 #define st string #define ct const #define xh(a,b,c) for(int a=b;a<=c;a++) #define wx while(1) #define dn(a,b,c) for(int a=b;a>=c;a--) using namespace std; vector<int>v; int n; int x; int a[10001]; int ans; void check(int k){ int l=0,r=v.size()-1; int t=INT_MAX; while(l<=r){ int mid=l+(r-l)/2; if(v[mid]>=k&&mid<t)t=mid; if(v[mid]>=k)r=mid-1; else l=mid+1; } if(t==INT_MAX)v.push_back(k); else v.insert(v.begin()+t,k); } signed main(){ cin>>n; xh(i,1,n)cin>>a[i]; sort(a+1,a+n+1); xh(i,1,n)v.push_back(a[i]); xh(i,1,n){ if(v.size()==1){ cout<<ans; return 0; } int t=v[0]+v[1]; ans+=t; v.erase(v.begin()+0); v.erase(v.begin()+0); check(t); } return 0; }
- 1
信息
- ID
- 99
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 124
- 已通过
- 38
- 上传者