제출 #1163475

#제출 시각아이디문제언어결과실행 시간메모리
1163475dzuizzAkcija (COCI21_akcija)C++20
40 / 110
152 ms16800 KiB
#include<bits/stdc++.h> using namespace std; #define int long long signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; pair<int,int> a[n]; // (d,w) for(int i=0;i<n;++i) cin>>a[i].second>>a[i].first; // Subtask 2 - k=1 if(k==1){ sort(a,a+n); pair<int,int> ans={0,0}; priority_queue<int> pq; for(int t=n,i=n-1;t>=1;--t){ while(i>=0&&a[i].first>=t) pq.emplace(-a[i--].second); if(pq.size()){ //cout<<pq.top()<<'\n'; ++ans.first; ans.second-=pq.top(); pq.pop(); } } cout<<ans.first<<" "<<ans.second<<'\n'; return 0; } // Subtask 4 sort(a,a+n); vector<pair<int,int>> v; for(int msk=0;msk<1<<n;++msk){ int s=0,c=0; bool flag=1; for(int i=0;i<n;++i)if(msk>>i&1){ if(a[i].first<=s) flag=0; ++s,c+=a[i].second; } if(flag) v.emplace_back(s,c); } sort(v.begin(),v.end(),[&](const pair<int,int>&a,const pair<int,int>&b){ return a.first==b.first?a.second<b.second:a.first>b.first; }); for(int i=0;i<k;++i){ if(i<(int)v.size()) cout<<v[i].first<<" "<<v[i].second<<'\n'; else cout<<"0 0\n"; } }
#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...