记录编号 |
452992 |
评测结果 |
WAWAAAAAAA |
题目名称 |
天天寄快递 |
最终得分 |
80 |
用户昵称 |
konnyaku |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.153 s |
提交时间 |
2017-09-20 19:16:34 |
内存使用 |
3.37 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<deque>
#include<algorithm>
using namespace std;
/////////
int n,m,s,k;
int ed=0;
int totel=0;
struct del
{
int x,y,z;
};
int knum;
del a[200001];
int p[200001];
/////////
bool compare(del a,del b)
{
return a.y>b.y;
}
int main()
{
freopen("expresss.in","r",stdin);
freopen("expresss.out","w",stdout);
cin>>n>>m>>s>>k;
///
knum=n;
for(int i=1;i<=n;i++)
p[i]=k;
for(int i=1;i<=m;i++)
{
cin>>a[i].x>>a[i].y;
a[i].z=0;
}
//
//
sort(a+1,a+m+1,compare);
for(int i=1;i<=m;i++)
{
if(s<=0||a[i].y<=2)
{
ed=-1;
break;
}
if(p[a[i].x]>0)
{
p[a[i].x]-=a[i].y;
s--;
a[i].z=-1;
if(p[a[i].x]<=0)
knum--;
}
if(knum==0)
{
ed=1;
break;
}
}
int q=1;
if(ed==1)
{
while(s>0)
{
if(a[q].z==0&&a[q].y>2)
{
totel+=a[q].y-2;
s--;
}
q++;
if(a[q].y<=2)
break;
}
for(int i=1;i<=n;i++)
totel-=p[i]-k+2;
cout<<totel;
}
else
cout<<-23333333;
return 0;
}