1295-Cubist Artwork

問題概要

ある同じ大きさの立方体を積み上げて作られたオブジェクトの前面からの様子と側面からの様子が与えられる.
このオブジェクトが用いた立方体の数の最小値を求めよ

解法

前面からと側面からの高さが同じ場合それを両方に用いることが出来る.
よって,側面及び前面からの立方体の数からそのような重複の場合の数を引いた物が答えになる.

実装(C)

#include <stdio.h>
#include <stdlib.h>
int n,m,i,r,t;int v[100];
int main() {
	for(;scanf("%d%d",&n,&m),n;){
		memset(v,0,400);
		r=0;
		for(i=0;i<n;i++){
			scanf("%d",&t);v[t]++;r+=t;
		}
		for(i=0;i<m;i++){
			scanf("%d",&t);if(v[t]--<=0)r+=t;
		}
		printf("%d\n",r);
	}
	return 0;
}