第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。接下来n行,每行一个正整数,表示每个人的体重。体重不超过1000000000,并且每个人的体重不超过m。Output一行一个整数表示最少需要的独木舟数。Input示例3 6123Output示例2
//最重的和最轻的坐一只船 如果超重就先让重的过去,否则就过去两个人
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;typedef long long LL;const int maxn = 10000 + 5;LL weight[maxn];int main(){ LL n,m; cin>>n>>m; for(int i=0;i<n;i++) { cin>>weight[i]; } sort(weight,weight+n); int cnt = 0; int left = 0; int right = n-1; while(left <= right) { if(weight[left] + weight[right] <= m) { left++; right--; cnt++; } else { right--; cnt++; } } cout<<cnt<<endl; return 0;}
新闻热点
疑难解答