Submission #1082049

#TimeUsernameProblemLanguageResultExecution timeMemory
1082049Dennis_JasonHiring (IOI09_hiring)C++14
100 / 100
608 ms54104 KiB
#include <bits/stdc++.h>
#define NMAX 2005
#define pb push_back
#define eb emplace_back
#define MOD 100003
#define nl '\n'
#define LLONG_MAX 9223372036854775807
#define pii pair<double,double>
#define tpl tuple<int,int,int>
//#pragma GCC optimize("O3")
#define INF 2147483647
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
/*
 *
 *
    ================DEMONSTRATION===================


    =====================END========================
 */
struct pers{
    double r,s,q;
    int ind;
};
int n,budget;
vector<pers>v;
int ans,ind;
double cost;
signed main() {

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>budget;
    v.resize(n+1);
    for(int i=1;i<=n;++i)
    {
        cin>>v[i].s>>v[i].q;
        v[i].r=(v[i].s/v[i].q);
        v[i].ind=i;
    }
    auto cmp=[&](pers a,pers b)
    {
        return a.r<b.r;
    };
    sort(v.begin()+1,v.end(),cmp);

    double total=0;
    priority_queue<double,vector<double>>pq;
    for(int i=1;i<=n;++i)
    {
       pq.push(v[i].q);
       total+=v[i].q;
       double maxi=budget/v[i].r;
       while(total>maxi)
       {
           total-=pq.top();
           pq.pop();
       }
       int nr=pq.size();
       double aux=total*v[i].r;
       if(nr>ans ||(nr==ans && aux<cost))
       {
           ans=nr;
           cost=aux;
           ind=i;
       }
    }
    priority_queue<pii,vector<pii>>heap;
    total=0;
    map<int,int>mp;
    for(int i=1;i<=ind;++i)
    {
        heap.push({v[i].q,v[i].ind});
        total+=v[i].q;
        mp[v[i].ind]=1;
    }
    double maxi=budget/v[ind].r;
    while(total>maxi)
    {
        auto x=heap.top();
        heap.pop();
        total-=x.first;
        mp[x.second]=0;
    }
    cout<<ans<<nl;
    for(int i=1;i<=n;++i)
    {
        if(mp[i])
            cout<<i<<nl;
    }
    return 0;
}

Compilation message (stderr)

hiring.cpp:7: warning: "LLONG_MAX" redefined
    7 | #define LLONG_MAX 9223372036854775807
      | 
In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/limits.h:195,
                 from /usr/lib/gcc/x86_64-linux-gnu/10/include/syslimits.h:7,
                 from /usr/lib/gcc/x86_64-linux-gnu/10/include/limits.h:34,
                 from /usr/include/c++/10/climits:42,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:39,
                 from hiring.cpp:1:
/usr/include/limits.h:135: note: this is the location of the previous definition
  135 | #  define LLONG_MAX __LONG_LONG_MAX__
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...