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