SRM586 Div1 easy
問題概要:略
解法:
各ノードに対して Y[i]を+0.5,0.0,-0.5したx軸と平行な直線を引いて何本と交差するか確かめる
単純にY[i]だけでやると 0 1 0 1 0 1 みたいなときに誤って3と出力してしまう
コード:::
double err[] = {0.5,0.0,-0.5}; class PiecewiseLinearFunction { public: int maximumSolutions(vector <int> Y) { int ysize = Y.size(); REP(i,1,ysize)if(Y[i] == Y[i-1])return -1; int ans = 0; rep(k,3) { rep(i,ysize) { int cnt = 0; ld trg = (ld)Y[i] + err[k]; if(trg == Y[0])cnt++; REP(j,1,ysize) { if(Y[j-1] > Y[j] && (Y[j-1] > trg && trg >= Y[j]))cnt++; else if(Y[j-1] < Y[j] && (Y[j-1] < trg && trg <= Y[j]))cnt++; } ans = max(ans,cnt); } } return ans; } };