记录编号 452157 评测结果 AAAAAAAAAA
题目名称 天天寄快递 最终得分 100
用户昵称 GravatarLovelove_boii 是否通过 通过
代码语言 C++ 运行时间 0.070 s
提交时间 2017-09-18 22:06:58 内存使用 3.37 MiB
显示代码纯文本
#include<fstream>
#include<algorithm>
using namespace std;
ifstream cin("expresss.in");
ofstream cout("expresss.out");
class node
{
	public:
	int num,val;
}ex[200001];
int n,m,s,k;
int times[200001],ansing[200001];
int ans=0;
int last=0;
bool cmp_k(node x,node y)
{
	if(x.num==y.num)
	{
		return x.val<y.val;
	}
	return x.num<y.num;
}
bool cmp_sum(int x,int y)
{
	return x<y;
}
int main()
{
	cin>>n>>m>>s>>k;
	for(int i=1;i<=m;i++)
	{
		int e,t;
		cin>>e>>t; 
		ex[i].num=e;
		ex[i].val=2-t;
		times[e]++;
	}
	sort(ex+1,ex+m+1,cmp_k);
	int ss=0;
	for(int i=1;i<=n;i++)
	{
		ss+=times[i];
		times[i]=ss;
	}
	for(int i=1;i<=n;i++)
	{
		int now=0;
		for(int j=times[i-1]+1;j<=times[i];j++)
		{
			if(now<k)
			{
				if(s==0||ex[j].val>=0)
				{
					cout<<"-23333333";
					cin.close();
					cout.close();
					return 0;
				}
				now-=ex[j].val;
				ans-=ex[j].val;
				s--;
			}
			else
			{
				ansing[++last]=ex[j].val;
			}
		}
		if(now<k)
		{
			cout<<"-23333333";
			cin.close();
			cout.close();
			return 0;
		}
	}
	sort(ansing+1,ansing+1+last,cmp_sum);
	for(int i=1;i<=s;i++)
	{
		if(ansing[i]>=0)
		{
			break;
		}
		ans-=ansing[i];
	}
	cout<<ans;
	cin.close();
	cout.close();
	return 0;
}