Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ID: xildar91
- PROG: humble
- LANG: C++11
- */
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef vector<int> vi;
- typedef vector<ll> vll;
- int inf_int=2e9;
- ll inf_ll=2e18;
- typedef pair<int,int> pii;
- #define pb push_back
- const double pi=3.1415926535898;
- #define dout if(debug) cout
- #define fi first
- #define se second
- #define sp setprecision
- #define sz size()
- #define x1 gfgs
- #define y1 asd
- #define rank asdsad
- bool debug=0;
- const int maxn=1e5+7;
- void solve()
- {
- ll k,n,m;
- cin >> n >> k >> m;
- int p[n],c[n];
- vector<pair<pii,int> > a;
- for(int i=0;i<n;i++)
- {
- cin >> p[i]>> c[i];
- a.pb({{c[i],0},i});
- a.pb({{p[i],1},i});
- }
- sort(a.begin(),a.end());
- map<int,bool> mp;
- int ans=0;
- set<pair<ll,int> > s;
- set<pair<ll,int> > s1;
- for(int i=0;i<a.sz;i++)
- {
- int in=a[i].se;
- if(a[i].fi.se==0)
- {
- if(k>0)
- {
- if( m >= a[i].fi.fi)
- {
- k--;
- mp[in]=true;
- m=m-a[i].fi.fi;
- s.insert({p[in]-c[in],in});
- ans++;
- }
- }
- else
- {
- if(s.begin()->fi + a[i].fi.fi<=m)
- {
- m=m-(s.begin()->fi + a[i].fi.fi);
- ans++;
- int in1=s.begin()->se;
- s1.insert({-p[in1],in1});
- mp[in]=true;
- s.erase(s.begin());
- s.insert({p[in]-c[in],in});
- }
- }
- }
- else
- {
- if(mp[in])
- {
- continue;
- }
- else if(m>=a[i].fi.fi)
- {
- m=m-a[i].fi.fi;
- ans++;
- mp[in]=true;
- }
- else if(-s1.begin()->fi>a[i].fi.fi)
- {
- m=m+(-s1.begin()->fi-a[i].fi.fi);
- s1.erase(s1.begin());
- s1.insert({-a[i].fi.fi,in});
- }
- }
- }
- cout << ans;
- }
- #define FILE "B-large"
- int main()
- {
- // freopen("input.txt","r",stdin);
- // freopen("output.txt","w",stdout);
- // freopen(FILE".in","r",stdin);
- // freopen(FILE".out","w",stdout);
- if(!debug)
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- }
- int t=1;
- while(t--)
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment