- 从牌面上可以得到一个上面(单独上限)
 - 然后总的牌面又可以得到一个上限。
 - 这两个上限的最小
 
#include<bits/stdc++.h>
using namespace std;
//模拟赛
int main(){
    long long E,EM,M,MH,H;
    cin>>E>>EM>>M>>MH>>H;
    //从单独组牌来考虑问题得上届
    long long easy = E+EM;
    long long mid = EM+M+MH;
    long long hard = MH+H;
     //从单独组牌来考虑问题得上届
    long long upper = min(easy,min(mid,hard));
    // 以共同出现得上界和单独出现得上界取最小。
    long long ans = min((E+EM+M+MH+H)/3,upper);
    cout<<ans<<endl;
    return 0;
}
 
京公网安备 11010502036488号