PKU 1079 Ratio

http://poj.org/problem?id=1079
分数が与えられるので、分母を1から増やしながら、前回表示したものより誤差の小さいものが出てきたらそれを表示して正確な値に近づけていくというもの。

誤差が同じであれば切り上げするというのを読み落として1WA。詰んだかと思いました。

main(){
  int a,b;
  bool nf=false;
  while(cin>>a>>b){
    if(nf)cout<<endl;
    nf=true;
    
    int g=__gcd(a,b);
    b/=g,a/=g;
    int p=1;
    int c=a*p/b;
    if(abs(a*p-b*c)>=abs(a*p-(c+1)*b))c++;
    cout<<c<<'/'<<p<<endl;
    for(int i=p+1;i<=b;i++){
      int tc=a*i/b;
      if(abs(a*i-b*tc)>=abs(a*i-(tc+1)*b))++tc;
      if(abs(a*i-b*tc)*p<abs(a*p-b*c)*i){
        cout<<tc<<'/'<<i<<endl;
        c=tc;
        p=i;
      }
    }
  }
}