我的代码:
#include <iostream>
using namespace std;
int main()
{
int a, b, c; //a表示内向,b表示外向,c表示无所谓
cin >> a >> b >> c; //读入数
if (b % 3 == 0 || 3-b % 3 <= c) //如果外向的人能够3人组成若干组,或者剩下的外向人有人与其配对
{
cout << a + (b + c) / 3 + (((b + c) % 3) ? 1 : 0) << endl;
//满足条件的话,将b和c看成一类,如果对3取余有数,则宿舍再加1
}
else cout << -1 << endl;//这种情况是,剩下1个外向人,但c只有1个或0个||剩下2外向人,但c只有0个
return 0;
}
以前写的代码:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
int sum=a;
sum+=b/3;
b%=3;
if(b==2)
{
if(c>=1)
{
sum++;
c-=1;
sum+=c/3;
if(c%3>0)
{
sum++;
}
}else{
cout<<"-1"<<endl;
return 0;
}
}
else if(b==1)
{
if(c>=2)
{
sum++;
c-=2;
sum+=c/3;
if(c%3>0)
{
sum++;
}
}else{
cout<<"-1"<<endl;
return 0;
}
}else{
sum+=c/3;
if(c%3>0)
{
sum++;
}
}
cout<<sum<<endl;
return 0;
}
参考(来自本人学长给的题解):