pass line B
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
build/*
|
build/*
|
||||||
tmp/*
|
tmp/*
|
||||||
|
*/gmon.out
|
||||||
|
gmon.out
|
27
src/main.cpp
27
src/main.cpp
@ -208,14 +208,15 @@ inline bool operator<(const ScoreBoredElementType &a,
|
|||||||
const ScoreBoredElementType &b) {
|
const ScoreBoredElementType &b) {
|
||||||
if (a.score != b.score) return a.score > b.score;
|
if (a.score != b.score) return a.score > b.score;
|
||||||
if (a.penalty != b.penalty) return a.penalty < b.penalty;
|
if (a.penalty != b.penalty) return a.penalty < b.penalty;
|
||||||
if (team_data[a.tid].pass_time_before_freeze.size() !=
|
// if (team_data[a.tid].pass_time_before_freeze.size() !=
|
||||||
team_data[b.tid].pass_time_before_freeze.size()) {
|
// team_data[b.tid].pass_time_before_freeze.size()) {
|
||||||
char *str = new char[1005];
|
// char *str = new char[1005];
|
||||||
sprintf(str, "pass_time_before_freeze size not equal!\n%d %d\n%d %d\n",
|
// sprintf(str, "pass_time_before_freeze size not equal!\n%d %d\n%d %d\n",
|
||||||
team_data[a.tid].pass_time_before_freeze.size(),
|
// team_data[a.tid].pass_time_before_freeze.size(),
|
||||||
team_data[b.tid].pass_time_before_freeze.size(), a.score, b.score);
|
// team_data[b.tid].pass_time_before_freeze.size(), a.score,
|
||||||
throw str;
|
// b.score);
|
||||||
}
|
// throw str;
|
||||||
|
// }
|
||||||
for (auto ita = team_data[a.tid].pass_time_before_freeze.begin(),
|
for (auto ita = team_data[a.tid].pass_time_before_freeze.begin(),
|
||||||
itb = team_data[b.tid].pass_time_before_freeze.begin();
|
itb = team_data[b.tid].pass_time_before_freeze.begin();
|
||||||
ita != team_data[a.tid].pass_time_before_freeze.end() &&
|
ita != team_data[a.tid].pass_time_before_freeze.end() &&
|
||||||
@ -223,8 +224,6 @@ inline bool operator<(const ScoreBoredElementType &a,
|
|||||||
++ita, ++itb) {
|
++ita, ++itb) {
|
||||||
if (*ita != *itb) return *ita < *itb;
|
if (*ita != *itb) return *ita < *itb;
|
||||||
}
|
}
|
||||||
// if (team_data[a.tid].name == team_data[b.tid].name)
|
|
||||||
// throw "teams in score bored should have distinctive names!";
|
|
||||||
return team_data[a.tid].name < team_data[b.tid].name;
|
return team_data[a.tid].name < team_data[b.tid].name;
|
||||||
}
|
}
|
||||||
std::set<ScoreBoredElementType> score_board;
|
std::set<ScoreBoredElementType> score_board;
|
||||||
@ -322,7 +321,8 @@ inline void Submit(char problem_name, char *team_name,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void FlushScoreBoard(bool show_info = true) {
|
void FlushScoreBoard(bool show_info = true, bool rebuild = true) {
|
||||||
|
if (rebuild) {
|
||||||
score_board.clear();
|
score_board.clear();
|
||||||
for (int i = 1; i <= team_number; i++) {
|
for (int i = 1; i <= team_number; i++) {
|
||||||
int score = 0, penalty = 0;
|
int score = 0, penalty = 0;
|
||||||
@ -335,6 +335,7 @@ void FlushScoreBoard(bool show_info = true) {
|
|||||||
}
|
}
|
||||||
score_board.insert(ScoreBoredElementType(i, score, penalty));
|
score_board.insert(ScoreBoredElementType(i, score, penalty));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
for (auto it = score_board.begin(); it != score_board.end(); ++it) {
|
for (auto it = score_board.begin(); it != score_board.end(); ++it) {
|
||||||
team_data[it->tid].rank = ++cnt;
|
team_data[it->tid].rank = ++cnt;
|
||||||
@ -401,6 +402,7 @@ void ScrollScoreBoard() {
|
|||||||
auto nval = *nxt;
|
auto nval = *nxt;
|
||||||
for (int i = 0; i < total_number_of_problems; i++) {
|
for (int i = 0; i < total_number_of_problems; i++) {
|
||||||
if (team_data[it->tid].is_frozen[i]) {
|
if (team_data[it->tid].is_frozen[i]) {
|
||||||
|
/*process a frozen problem*/
|
||||||
frozen_found = true;
|
frozen_found = true;
|
||||||
team_data[it->tid].is_frozen[i] = false;
|
team_data[it->tid].is_frozen[i] = false;
|
||||||
team_data[it->tid].already_passed_before_block[i] |=
|
team_data[it->tid].already_passed_before_block[i] |=
|
||||||
@ -442,7 +444,7 @@ void ScrollScoreBoard() {
|
|||||||
}
|
}
|
||||||
finish_scroll:;
|
finish_scroll:;
|
||||||
competition_status = kNormalRunning;
|
competition_status = kNormalRunning;
|
||||||
FlushScoreBoard(false);
|
FlushScoreBoard(false, false);
|
||||||
CheckDataAfterScroll();
|
CheckDataAfterScroll();
|
||||||
PrintScoreBoard();
|
PrintScoreBoard();
|
||||||
}
|
}
|
||||||
@ -668,6 +670,7 @@ inline void Excute(const char *const command) {
|
|||||||
int main() {
|
int main() {
|
||||||
// freopen("tmp/pro.in","r",stdin);
|
// freopen("tmp/pro.in","r",stdin);
|
||||||
// freopen("tmp/pro.out","w",stdout);
|
// freopen("tmp/pro.out","w",stdout);
|
||||||
|
ICPCManager::BackEnd::team_data.reserve(10005);
|
||||||
char command[1024];
|
char command[1024];
|
||||||
try {
|
try {
|
||||||
while (true) {
|
while (true) {
|
||||||
|
Reference in New Issue
Block a user