Elevators UVALive
来源:互联网 发布:windows 桌面版qq 编辑:程序博客网 时间:2024/05/18 00:13
题目链接:https://vjudge.net/problem/UVALive-7014
题意:对于一个S条提交记录的榜,判断其最早成为符合要求的榜的时间,即最早从符合要求的榜变成不符合要求的榜的时刻,若没有,输出“--:--:--”。符合要求的榜要求如下:(1)所有队伍都出题了;(2)没有队伍AK;(3)所有题目都有队伍做出来了;(4)没有题目被所有队伍做出来。
思路:首先将S条提交记录按时间从小到大排序,然后没扫一行,判断当前是否是符合条件的榜即可。
代码:
#include <bits/stdc++.h>using namespace std;struct Submission{ int t; char p[10]; int h, m, s; char status[100]; bool operator < (const Submission &sub) const{ if(h == sub.h){ if(m == sub.m){ return s < sub.s; } return m < sub.m; } return h < sub.h; }}submissions[5000 + 100];set<int> problems[17];set<int> teams[155];bool judge(int T, int S){ for(int i = 1; i <= T; i++){ if(teams[i].size() == 0 || teams[i].size() == S) return 0; } for(int i = 0; i < S; i++){ if(problems[i].size() == 0 || problems[i].size() == T) return 0; } return 1;}int main(){ int T, P, S; while(~scanf("%d%d%d", &T, &P, &S)){ if(T == 0 && P == 0 && S == 0){ break; } for(int i = 0; i <= T; i++){ teams[i].clear(); } for(int i = 0; i <= P; i++){ problems[i].clear(); } Submission startmission, endmission; bool is_start = false; bool is_end = false; for(int i = 0; i < S; i++){ scanf("%d%s %d:%d:%d ", &submissions[i].t, submissions[i].p, &submissions[i].h, &submissions[i].m, &submissions[i].s); gets(submissions[i].status); } sort(submissions, submissions + S); for(int i = 0; i < S; i++){ if(strcmp(submissions[i].status, "Yes") == 0){ teams[submissions[i].t].insert(submissions[i].p[0] - 'A'); problems[submissions[i].p[0] - 'A'].insert(submissions[i].t); bool flag = judge(T, P); if(!is_start && flag){ is_start = true; startmission.h = submissions[i].h; startmission.m = submissions[i].m; startmission.s = submissions[i].s; } else if(is_start && !flag){ is_end = true; endmission.h = submissions[i].h; endmission.m = submissions[i].m; endmission.s = submissions[i].s; break; } } } if(is_start){ printf("%02d:%02d:%02d ", startmission.h, startmission.m, startmission.s); } else{ printf("--:--:-- "); } if(is_end){ printf("%02d:%02d:%02d\n", endmission.h, endmission.m, endmission.s); } else{ printf("--:--:--\n"); } } return 0;}
阅读全文
0 0
- Elevators UVALive
- Elevators UVALive
- 最短路 hnu13430 Elevators
- URAL 1901 Space Elevators(贪心)
- BNUOJ26429 Space Elevators(贪心)
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- 专门访问和设置SharePreference的工具类, 保存和配置一些设置信息
- python常用的快捷键
- 比特币隔离验证(segwit)已激活,后面怎么走?
- deep learning 深度学习的一点tricks
- js--缓动动画、匀速运动、无缝滚动
- Elevators UVALive
- Javascript 实现城市选择控件
- Git命令大全
- HDU6180(贪心)
- 教你避免内存泄露
- HTTP请求头和响应头
- PHP编程效率的20个要点 (2015-09-25 14:37:49) 转载 ▼ 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,
- Unity Canvas UI line Renderer
- 前端对后台传过来是数组进行重新排序显示