原题
题目大意:某ACM队实行老带新策略:可以由两个老的带一个新的,也可以由一个老的带两个新的,问最多可以形成多少组。
思路:两种方法都至少有一名老的队员一名新的队员,问题就转化为了第三名队员怎么选,才能使形成的队伍最多。
如果剩余的老队员的总数大于剩余新队员总数,则第三名队员是老队员。反之,第三名队员就是新队员。这样就能使新老队员人数越来越均衡,防止剩余很多老队员或者新队员。
#include <cstring>
#include <string>
#include <iostream>
#include <cstdio>
#include<algorithm>
typedef long long ll;
const int N=300005;
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int m,n,sum=0;
cin>>m>>n;
while(m&&n)
{
m--;
n--;
if(m||n)
{
sum++;
if(m>n)
m--;
else
n--;
}
}
cout<<sum;
}