PKU 2497 Strategies

http://poj.org/problem?id=2497
プログラムコンテストにおいて、与えられた順番に問題を解いていく人、簡単なものから解いていく人、難しいものから解いていく人それぞれのスコアを比べて勝者を出力せよというような問題。

単純にシミュレーションをするだけなのですが、スコアが小さいほうがいいということを見落として2WAほどもらいました。

int in[40];

main(){
  int T;
  cin>>T;
  rep(sc,T){
    printf("Scenario #%d:\n",sc+1);
    int mi,p;
    cin>>mi>>p;
    PI bill(0,0),steve(0,0),linus(0,0);
    int ti=0;
    rep(i,p)cin>>in[i];
    rep(i,p){
      if(ti+in[i]<=mi){
        bill.F++;
        bill.S-=ti+in[i];
        ti+=in[i];
      }else break;
    }
    sort(in,in+p);
    ti=0;
    rep(i,p){
      if(ti+in[i]<=mi){
        steve.F++;
        steve.S-=ti+in[i];
        ti+=in[i];
      }else break;      
    }
    reverse(in,in+p);
    ti=0;
    rep(i,p){
      if(ti+in[i]<=mi){
        linus.F++;
        linus.S-=ti+in[i];
        ti+=in[i];
      }else break;      
    }
    PI win=steve;
    if(bill>steve && bill>linus){
      win=bill;
      cout<<"Bill";
    }if(linus>bill && linus>steve){
      win=linus;
      cout<<"Linus";
    }else cout<<"Steve";
    printf(" wins with %d solved problems and a score of %d.\n\n",win.F,-win.S);
  }
}