记录编号 191410 评测结果 AAAAAAAAAAAAAAAA
题目名称 [USACO Oct05]奶牛航班 最终得分 100
用户昵称 Gravatarmikumikumi 是否通过 通过
代码语言 C++ 运行时间 0.656 s
提交时间 2015-10-07 17:26:41 内存使用 1.46 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<set>
using namespace std;
const int SIZEK=50010,SIZEN=10010,SIZEC=110;
int K,N,C;
class poi
{
public:
	int fr,to,M;
	poi()
	{
		fr=to=M=0;
	}
};
bool cmp(poi a,poi b)
{
	if(a.fr==b.fr) return a.to<b.to;
	return a.fr<b.fr;
}
class miku
{
    public:
	int k;
	poi m[SIZEK];
	miku()
	{
		k=0;
	}
	void print()
	{
		for(int i=1;i<=k;i++)
			cout<<m[i].fr<<" "<<m[i].to<<" "<<m[i].M<<endl;
	}
	void push(int fr,int to,int M)
	{
		k++;
		m[k].fr=fr;m[k].to=to;m[k].M=M;
	}
	void Sort()
	{
		sort(m+1,m+1+k,cmp);
	}
	int get()
	{
		int ans=0;
		multiset<int,greater<int> > load;
		multiset<int,greater<int> >::iterator it;
		int now=1;
		for(int i=1;i<=N;i++)
		{
			it=load.end();if(!load.empty()) it--;
			while(!load.empty()&&(*it)==i) load.erase(it--),ans++;//该下的下
			while(m[now].fr==i)
			{
				for(int i=1;i<=m[now].M;i++) load.insert(m[now].to);
				now++;
			}
			while(load.size()>C) load.erase(load.begin());
		}
		return ans;
	}
}P,Q;
void read()
{
	scanf("%d%d%d",&K,&N,&C);
	int S,E,M;
	for(int i=1;i<=K;i++)
	{
		scanf("%d%d%d",&S,&E,&M);
		if(E>S) P.push(S,E,M);
		else Q.push(E,S,M);
	}
	P.Sort();
	Q.Sort();
}
int main()
{
	freopen("cowflight.in","r",stdin);
	freopen("cowflight.out","w",stdout);
	read();
	printf("%d",P.get()+Q.get());
	return 0;
}