蓝桥杯青少中级组题目
题目:小蓝有几箱口罩,现在要平均分配给两个医院,第一行输入一共的箱数,第二行输入每一箱的口罩数量,输出平均分配后的结果,如两个数据大小不同,则按照从大到小输出。输入:3 200 300 110;
输出:310 300
我的代码是这样的,感觉并不是很好,并且测试不是完全通过。
程序代码:
#include<iostream> #include <algorithm> using namespace std; int jue(int a){ if(a<0){ return -a; } else{ return a; } } bool cmp(int a, int b){ return a>b; } int main(){ int n=0,a[10],sum_k=0,sum[100000],temp=0,temp_lop=1; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; sum_k=sum_k+a[i]; } int summ=sum_k; sum_k=sum_k/2; for(int i=0;i<n;i++){ sum[temp]=a[i]; temp++; for(int j=i+1;j<n;j++){ sum[temp]=a[i]+a[j]; temp++; for(int p=j+1;p<n;p++){ sum[temp]=a[i]+a[j]+a[p]; //cout<<"here"; temp++; } } } //cout<<temp; int minnum=jue(sum_k-sum[0]),ans=sum_k-sum[0]; for(int i=1;i<temp;i++){ if(jue(sum_k-sum[i])<minnum){ minnum=jue(sum_k-sum[i]); ans=sum_k-sum[i]; } } int ans_ar[2]; ans_ar[0]=sum_k+ans; ans_ar[1]=summ-sum_k-ans; sort(ans_ar,ans_ar+2,cmp); //cout<<sum_k+ans<<" "<<summ-sum_k-ans<<endl; cout<<ans_ar[0]<<" "<<ans_ar[1]<<endl; }