WHY WA?
  • 板块题目总版
  • 楼主zhege122
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/9 11:16
  • 上次更新2024/11/9 14:06:02
查看原帖
WHY WA?
1123449
zhege122楼主2024/11/9 11:16

题目

SSR现在是班级的体育委员,负责给每一组的学生分配器材。

今天的体育课是练习跳绳,SSR要负责准备跳绳的数量,每一组学生人数是不同的,并且每一组学生的练习时间也不同,同一个跳绳同一个时间只能一个人使用。

SSR不知道最少准备多少条跳绳,才能满足本节体育课的使用,作为SSR的朋友SST,请你帮助他找出结果。

INPUT

第一行输入一个整数nn,表示学生的组数。

接着nn行,每一行输入三个数字s,t,b(s<t)s, t, b(s<t),分别表示这一组开始练习的时间、结束练习的时间(此时是不练习的)、学生人数。

OUTPUT

输出为一行,表示最少要准备的跳绳数量。

样例输入1

3
4 10 1
8 13 3
2 6 2

样例输出1

4

数据范围

对于 100% 的数据:1n,s,t2105,1b1071 \le n, s, t \le 2*10^5,1 \le b \le 10^7

MY CODE

#include <bits/stdc++.h>

using namespace std;

struct event {
    int time, type, cnt;
    bool operator<(const event &other) const {
        if (time != other.time) {
        	return time < other.time;
		}
        return type > other.type;
    }
};

vector<event> events;
priority_queue<int> q;

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        int s, t, b;
        scanf("%d%d%d", &s, &t, &b);
        events.push_back({s, 1, b});
        events.push_back({t, -1, b});
    }
    
    sort(events.begin(), events.end());
    
    int mx = 0;
    int curs = 0;

    for (const auto &event : events) {
        if (event.type == 1) {
            q.push(event.cnt);
            curs += event.cnt;
            mx = max(mx, curs);
        } else {
            curs -= event.cnt;
            q.pop();
        }
    }

	printf("%d\n", mx);

    return 0;
}

为啥只有20分!!!大佬们求助DEBUG

2024/11/9 11:16
加载中...