SRM540

div2 easy だけ解けた。
とても無駄のあるコード。setいらないと思う

#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;
typedef pair<int, int> P;
typedef pair<int, P> RGB;
typedef set<RGB> colors;

class RandomColoringDiv2{
public:

	int D1, D2;
	int sR, sG, sB;
	colors col;
	bool isOk(int r, int g, int b){
		return (abs(sR-r)<=D2 && abs(sG-g)<=D2 && (sB-b)<=D2   &&   (abs(sR-r)>=D1 || abs(sG-g)>=D1 || abs(sB-b)>=D1));
	}
	int getCount(int maxR, int maxG, int maxB, int startR, int startG, int startB, int d1, int d2){
		col.clear();
		D1 = d1; D2 = d2;
		sR = startR; sG = startG; sB = startB;
		for(int r = max(0,sR - D2); r <= min(sR + D2, maxR -1); r++){
			for(int g = max(0,sG - D2); g <= min(sG + D2, maxG -1); g++){
				for(int b = max(sB - D2,0); b <= min(sB + D2, maxB -1); b++){
					if((abs(sR-r)<=D2 && abs(sG-g)<=D2 && (sB-b)<=D2   &&   (abs(sR-r)>=D1 || abs(sG-g)>=D1 || abs(sB-b)>=D1))){
						//printf("(%d %d %d)", r, g,b);
						col.insert(RGB(r, P(g, b)));
					}
				}
			}
		}
		return (int)col.size();
	}
};

Rate: 618 -> 634