目的:一堆绳段,组成最长绳子。
输入:
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;
}