首页 > 代码库 > 为什么要卡我= =|||
为什么要卡我= =|||
1.Aizu 1315(UESTC 2014 Summer Training #20 A)
换了一种听起来不错的写法...结果还是挂...留这里等发芽了再写
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int maxn = 1000;int n, month, day, h, m, id, last, god;int presum[maxn][2*maxn], st[maxn], et[maxn], cnt[maxn];char c;int main(){#ifdef LOCAL freopen("A.in", "r", stdin);#endif while(scanf("%d", &n)) { if(n == 0) break; last = -1; memset(cnt, 0, sizeof(cnt)); for(int i = 0; i < n; i++) { scanf("%d/%d %d:%d %c %d", &month, &day, &h, &m, &c, &id); if(month*100+day != last || i == n-1) { //update for(int j = 1; j < 1000; j++) for(int k = 0; k < god; k++) { cnt[j] += presum[j][et[k]?et[k]:1440] - presum[j][st[k]]; }// cout <<"Go" << endl;// cout << presum[3][9*60+10] << endl;// for(int j = 1; j <= 3; j++)// for(int k = 0; k < god; k++)// cout << presum[j][et[k]?et[k]:1440] - presum[j][st[k]] << endl;// for(int i = 1; i <=3 ; i++)// cout << cnt[i] << endl; last = 100*month+day; god = 0; memset(presum, 0, sizeof(presum)); memset(et, 0, sizeof(et)); } if(id == 0) { if(c == ‘I‘) st[god] = h*60+m; else et[god++] = h*60+m; continue; } if(c == ‘I‘) for(int j = h*60+m; j <= 1440; j++) presum[id][j] = j-60*h-m; else for(int j = h*60+m+1; j <= 1440; j++) presum[id][j] = presum[id][h*60+m]; } int ans = 0; for(int i = 1; i < 1000; i++) ans = max(ans, cnt[i]); printf("%d\n", ans); } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。