PKU 3656 Rock Skipping
http://poj.org/problem?id=3656
石投げのコンテストで最も強い投げ方を答えろというような問題。
始点と間隔から水につく回数を出す関数がおかしくなっていて、かなりWAりました。
オーダーを下げるために試行錯誤する問題よりは、こういうもののほうが自分にはしょうにあっている気がします。
string in; PI get(int s,int d){ PI ret(0,s); for(;ret.S<SZ(in);ret.S+=d){ if(in[ret.S]=='.')ret.F++; else break; } if(ret.S>=SZ(in))ret.S-=d; return ret; } main(){ while(getline(cin,in)){ if(in=="END")break; PI ans(0,-SZ(in)),tmp(-1,-1); rep(i,SZ(in)){ rep(j,SZ(in)){ PI tt=get(i,j+1); if(tmp<tt){ tmp=tt; ans=mp(i,-j-1); }else if(tmp==tt && ans<mp(i,-j-1)){ ans=mp(i,-j-1); } } } cout<<ans.F<<' '<<-ans.S<<endl; } }