Submission #201685

# Submission time Handle Problem Language Result Execution time Memory
201685 2020-02-11T17:19:00 Z Shelby Schools (IZhO13_school) C++11
20 / 100
2000 ms 25924 KB
#include <bits/stdc++.h>
#define MAXN 300005
using namespace std;
typedef long long ll;

int a[MAXN],b[MAXN];
bool taken[MAXN];

set<pair<int,int>,greater<pair<int,int> > > mm;
set<pair<int,int>,greater<pair<int,int> > > ss;
multiset<int> tt;

vector< pair<int,int> > poma;
vector< pair<int,int> > pomb;
vector<int> not_taken;

int main()
{ int m,n,s,i,cnt=0,p;
long long sol=0;
scanf("%d%d%d",&n,&m,&s);

for(i=0;i<n;i++)
{
    scanf("%d%d",&a[i],&b[i]);

    poma.push_back( {a[i],i} );

    pomb.push_back( {b[i],i} );
}

sort(poma.begin(),poma.end(),greater<pair<int,int> >());

sort(pomb.begin(),pomb.end(),greater<pair<int,int> >());

for(i=0;i<m;i++)
{
    int tmp=poma[i].second;

    sol+=(ll)a[tmp];

    taken[tmp]=true;

    mm.insert( { b[tmp]-a[tmp] , tmp } );
}

for(i=0;i<n;i++)
{
    int tmp=pomb[i].second;

    if(taken[tmp]==false && cnt<s)
    {
        cnt++;

        sol+=(ll)b[tmp];

        taken[tmp]=true;

        ss.insert( { a[tmp]-b[tmp] , tmp } );
    }

    if(taken[tmp]==false && cnt>=s) not_taken.push_back(a[tmp]);
}

bool ok=true;

while(ok)
{
    pair<int,int> k=*mm.begin();   pair<int,int> l=*ss.begin();

    if((k.first+l.first)>0 || ( ((k.first+l.first)==0) && a[k.second]>a[l.second]) )
    {
        mm.erase(mm.begin());   ss.erase(ss.begin());

        mm.insert( { -l.first,l.second } );

        ss.insert( { -k.first,k.second } );

        sol+=(ll)k.first+(ll)l.first;
    }
    else ok=false;
}

for(auto it=mm.begin();it!=mm.end();++it)
{
    pair<int,int> tmp=*it;

    tt.insert(a[tmp.second]);
}

sort(not_taken.begin(),not_taken.end(),greater<int>());

p=0;

ok=true;

while(ok && p<not_taken.size() && !tt.empty())
{
    int kk=*tt.begin();

    if(kk<not_taken[p])
    {
        tt.erase(tt.begin());

        sol+=(ll)not_taken[p]-(ll)kk;

        p++;
    }
    else ok=false;
}

printf("%lld\n",sol);
    return 0;
}

Compilation message

school.cpp: In function 'int main()':
school.cpp:96:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 while(ok && p<not_taken.size() && !tt.empty())
             ~^~~~~~~~~~~~~~~~~
school.cpp:20:6: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 scanf("%d%d%d",&n,&m,&s);
 ~~~~~^~~~~~~~~~~~~~~~~~~
school.cpp:24:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&a[i],&b[i]);
     ~~~~~^~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Execution timed out 2079 ms 376 KB Time limit exceeded
3 Correct 5 ms 376 KB Output is correct
4 Incorrect 5 ms 404 KB Output isn't correct
5 Incorrect 5 ms 376 KB Output isn't correct
6 Incorrect 5 ms 376 KB Output isn't correct
7 Incorrect 8 ms 632 KB Output isn't correct
8 Correct 9 ms 1016 KB Output is correct
9 Incorrect 9 ms 888 KB Output isn't correct
10 Incorrect 9 ms 888 KB Output isn't correct
11 Incorrect 8 ms 760 KB Output isn't correct
12 Incorrect 8 ms 760 KB Output isn't correct
13 Incorrect 46 ms 4712 KB Output isn't correct
14 Incorrect 67 ms 5092 KB Output isn't correct
15 Incorrect 106 ms 7896 KB Output isn't correct
16 Correct 218 ms 16080 KB Output is correct
17 Incorrect 268 ms 21220 KB Output isn't correct
18 Incorrect 266 ms 21712 KB Output isn't correct
19 Incorrect 307 ms 23380 KB Output isn't correct
20 Incorrect 339 ms 25924 KB Output isn't correct