2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 B. Train Seats Reservation

来源:互联网 发布:咨询公司面试数据分析 编辑:程序博客网 时间:2024/05/22 06:11

题目链接:Train Seats Reservation
思路:按时间点排序,用vis数组存静上车人数(可能是负),注意去重点。
顺序遍历所有的时间点,计算车上人数的变化,得到过程中的最大值。

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<cmath>#include<map>#include<set>#include<cstdlib>#define mem(a,b) memset(a,b,sizeof(a))#define INF 0x7ffffffftypedef long long ll;using namespace std;const int maxn = 1010;ll arr[maxn*2];ll vis[110];int main(){    ll s,t,k;    int n;    while(~scanf("%d",&n)){        if(n == 0){            puts("*");            break;        }        ll ans = 0;        int m = 0;        memset(arr,0,sizeof(arr));        memset(vis,0,sizeof(vis));        for(int i = 0; i < n; i++){            scanf("%lld%lld%lld",&s,&t,&k);            arr[m++] = s;            arr[m++] = t;            vis[s] += k;            vis[t] += -k;        }        sort(arr,arr+m);        int kind = 1;        for(int i = 1; i < m; i++){            if(arr[i] != arr[i-1]) arr[kind++] = arr[i];        }        ll tmp = 0;        for(int i = 0; i < kind; i++){            tmp += vis[arr[i]];            ans = max(ans,tmp);        }        printf("%lld\n",ans);    }    return 0;}
阅读全文
0 0
原创粉丝点击