记录编号 |
452157 |
评测结果 |
AAAAAAAAAA |
题目名称 |
天天寄快递 |
最终得分 |
100 |
用户昵称 |
Lovelove_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;
}