PKU 2535 Very Simple Problem

http://poj.org/problem?id=2535
n人のコンテストの主催者がp問の問題に難易度ランクをつける。
このとき、ある主催者にとって最も簡単な問題とは最も低い難易度ランクをつけられた問題で、最難問題とは最も高い難易度ランクを付けられた問題となる。
ここで、易しい問題とは、主催者の過半数に最も簡単な問題とされ、かつ、誰にも最難問題とされていない問題のことである。

易しい問題のリストを出力しろというような問題。

易しい問題の個数を出力するのかと勘違いして、サンプルが合わないと悩んでいました。

int simp[100];
int hard[100];

main(){
  int n,p;
  cin>>n>>p;
  rep(i,n){
    map<int,set<int> >app;
    rep(j,p){
      int t;
      cin>>t;
      app[t].insert(j);
    }
    set<int> & begin=app.begin()->S;
    FOR(it,begin)simp[*it]++;
    set<int> rbeg=app.rbegin()->S;
    FOR(it,rbeg)hard[*it]=true;
  }

  int ans=0;
  rep(i,p)
    if(simp[i]*2>n && !hard[i]){
      cout<<i+1<<' ';
      ans=i+1;
    }
  if(!ans)cout<<0<<endl;
  cout<<endl;
}