⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1545.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1545 on 2006-06-10 at 12:31:25 */ 
#include <cstdio>
#include <algorithm>
#include <functional>
using namespace std;

const int CN = 128, PN = 10;
const int PEN = 20;

class Team {
public:
	int num, sol[PN], soln, subn, pt;
	void clear(int o) { num = o; subn = soln = pt = 0; memset(sol, 0, sizeof(sol)); }
	void submit(int, int, char);
	void show() const { if(subn != 0) printf("%d %d %d\n", num, soln, pt); }
	bool operator >(const Team&) const;
};
void Team::submit(int o, int time, char s) {
	subn++;
	switch(s) {
	case 'C': if(sol[o] >= 0) { soln++; pt += time+sol[o]*PEN; sol[o] = -5000; } break;
	case 'I': sol[o]++; break;
	}
}
bool Team::operator >(const Team& t) const {
	if(soln != t.soln) return soln > t.soln;
	else if(pt != t.pt) return pt < t.pt;
	else return num < t.num;
}

int main()
{
	Team t[CN];
	int i, k;
	char line[128];
	bool end = false;

	for(k = 0; !end; k++) {
		if(k != 0) putchar('\n');
		for(i = 0; i < CN; i++) t[i].clear(i);
		while(true) {
			if(gets(line) == NULL) { end = true; break; }
			else if(line[0] == 0) break;
			int cn, tm, po; char st;
			sscanf(line, "%d %d %d %c", &cn, &po, &tm, &st);
			t[cn].submit(po, tm, st);
		}
		sort(t, t+CN, greater<Team>());
		for(i = 0; i < CN; i++) t[i].show();
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -