目的:一堆绳段,组成最长绳子。
输入:
N 绳段条数
N个整数
输出:
输出最长的长度,向下取整。
算法:
短的先加,折半的就少,把长的留在最后。因此用vector,并且排序。
#include<stdio.h>
#include<iostream>
#include<vector>
#include<algorithm>using namespace std;int N;//绳子段的长度
vector<int> v;int main()
{scanf("%d",&N);v.resize(N);for(int i=0;i<N;i++){scanf("%d",&v[i]);}sort(v.begin(),v.end());double ans;ans = v[0];for(int i=1;i<N;i++){ans = (ans+v[i])/2;}printf("%d",(int)ans);return 0;
}