无标题文章

2018-09-25  本文已影响10人  _弓长_大人

2017年 多校 第10 场 Schedule

#include<cstdio>
#include<vector>
#include<utility>
#include<algorithm>
#include<map>
using namespace std;
typedef long long LL;
const int N=1e7+5;
typedef pair<int,int> P;
P a[N];
inline bool cmp(const P &a,const P &b)
{
    return a.second<b.second;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        multimap<int,int> Map;
        for(int i=0;i<n;i++)
        {
// second 开始时间  结束时间
            scanf("%d%d",&a[i].second,&a[i].first);
        }
// 开始时间优先
        sort(a,a+n,cmp);
        LL sum=0ll;
        for(int i=0;i<n;i++)
        {
            if(Map.size()==0)
            {
                Map.insert(a[i]);
            }
            else
            {
                map<int,int>::iterator it;
//第一个大于它
                it=Map.upper_bound(a[i].second);
                //printf("%d %d\n",it->first,it->second);
                if(it==Map.begin())
                {
                    Map.insert(a[i]);
                }
                else
                {
                     it--;
                     P tmp=make_pair(a[i].first,it->second);
                     Map.erase(it);
                     Map.insert(tmp);
                }
            }
        }
        map<int,int>::iterator it2;
        for(it2=Map.begin();it2!=Map.end();it2++)
            sum+=(it2->first) - (it2->second);
        printf("%d %lld\n",Map.size(),sum);
        Map.clear();
    }
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读