记录编号 452992 评测结果 WAWAAAAAAA
题目名称 天天寄快递 最终得分 80
用户昵称 Gravatarkonnyaku 是否通过 未通过
代码语言 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;
    }