题目:http://www.gdfzoj.com/oj/contest/467/problems/1
看似min很好求。。。实则一堆坑
1,最小值不是两“层”!!!
2,m、n 别搞反
最大值看似难求。。。实则想想就明白了
代码:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxS=1000;
int zuo[maxS+5],zhu[maxS+5],an[maxS+5],am[maxS+5];
int main()
{
int i,j,min1,n,m;
long long max1;
freopen("a.txt","r",stdin);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
scanf("%d",&zhu[i]);
for (i=1;i<=m;i++)
scanf("%d",&zuo[i]);
max1=0; min1=0;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
if (zuo[i]>zhu[j])
max1+=zhu[j];
else
max1+=zuo[i];
}
}
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
if (zuo[i]==zhu[j] && !am[i] && !an[j])
{
min1+=zuo[i];
am[i]=1;
an[j]=1;
}
}
}
for (i=1;i<=m;i++)
if (am[i]==0)
min1+=zuo[i];
for (i=1;i<=n;i++)
if (an[i]==0)
min1+=zhu[i];
printf("%d %lld\n",min1,max1);
return 0;
}