제출 #1257897

#제출 시각아이디문제언어결과실행 시간메모리
1257897brover29Akcija (COCI21_akcija)C++17
0 / 110
1010 ms589824 KiB
#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = long long;
const ll N=2005;
#define f first
#define s second
const string br="617283";
struct cmp{
    bool operator()(const pair<ll,ll> &a,const pair<ll,ll> &b)const{
        if(a.f==b.f)return a.s<b.s;
        return a.f>b.f;
    }
};
multiset<pair<ll,ll>,cmp>dp[N];
ll n,k,a[N],d[N];
void upd(multiset<pair<ll,ll>,cmp> &a){

    while(a.size()>2*k){
        auto it=(--a.end());
        a.erase(it);
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>k;
    for(ll i=1;i<=n;i++){
        cin>>a[i]>>d[i];
    }
    dp[0].insert({0,0});
    for(ll i=1;i<=n;i++){
        dp[i]=dp[i-1];
        for(auto [cnt,w]:dp[i-1]){
            if(cnt+1>d[i])continue;
            dp[i].insert({cnt+1,w+a[i]});
        }
       // upd(dp[i]);
    }

    for(auto [cnt,w]:dp[n]){
        cout<<cnt<<' '<<w<<'\n';
        k--;
        if(!k)break;
    }
}
#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...