PKU 1940 Polygon Programming with Ease

http://poj.org/problem?id=1940
http://poj.org/problem?id=1939と逆のことをやらせたいらしい。

ちなみに1939はn個の点が与えられるので、与えられた順番に点の中点を出力するというような問題でした。

小さいケースで式変形して規則性を見つけました。

pair<ll,ll> in[50000];

main(){
  int n;
  while(~scanf("%d",&n)){
    rep(i,n)cin>>in[i].F>>in[i].S;
    cout<<n;
    rep(i,n){
      ll o=0;
      rep(j,n){
        if(j%2)o-=in[(i+j)%n].F;
        else o+=in[(i+j)%n].F;
      }
      cout<<' '<<o<<".000000 ";
      o=0;
      rep(j,n){
        if(j%2)o-=in[(i+j)%n].S;
        else o+=in[(i+j)%n].S;        
      }
      cout<<o<<".000000";
    }
    cout<<endl;
  }
}