CodeForces 19A World Football Cup (简单题)

题目类型  简单题

题目意思
输入 n (1 <= n <=50, 且 n 为偶数) 支足球队的队名和各个队与其他队比赛一场后的比分, 按字典序输出最终排在前面 n / 2支队的队名
排名首先看得分情况 (比赛结果中 赢的一方得3分 输的一方得0分 | 平手情况两队各得一分)
如果得分相同就看 (进球数 - 失球数) 的值, 如果还是相同就看进球数 (都是大的排在前面)

解题方法
成功输入数据后, 统计数据, 最后排序输出即可 (详情看代码)

附 :
STL(98) 在 ACM 中的应用   还没了解的同学都看下 ->  中文简洁版 |  STL in ACM |  英文完全版第一部分  英文完全版第二部分

参考代码  - 有疑问的地方在下方留言 看到会尽快回复的
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

char str[100][100];
char s[100];
char s1[100], s2[100];
struct P {
  string name;
  int s;
  int w, l;
}p[110];

bool cmp(const P & a, const P & b ) {
  if(a.s == b.s) {
    if(a.w - a.l == b.w - b.l) {
      return a.w > b.w;
    }
    else return a.w - a.l > b.w - b.l;
  }
  return a.s > b.s;
}

bool cmp2(const P & a, const P & b) {
  return a.name < b.name;
}

int main() {
  int n, a, b;
  while(scanf("%d", &n) != EOF) {
    mapmm;
    mapw;
    mapl;
    setname;
    set::iterator ps;
    for( int i=0; i b) mm[ts1] += 3;
      else if(a == b) mm[ts1]++, mm[ts2]++;
      else mm[ts2] += 3;
    }
    int k = 0;
    for( ps=name.begin(); ps != name.end(); ps++ ) {
      p[k].name = *ps;
      p[k].s = mm[*ps];
      p[k].w = w[*ps];
      p[k].l = l[*ps];
      k++;
    }
    sort(p, p + k, cmp);
    sort(p, p + n/2, cmp2);
    for( int i=0; i


你可能感兴趣的:(简单题)