Submission #1163587

#TimeUsernameProblemLanguageResultExecution timeMemory
1163587i271828Akcija (COCI21_akcija)C++20
0 / 110
4 ms328 KiB
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
using namespace std;
const int MAX=2005;

bool comp(pii a,pii b){
	if (a.second==b.second) return a.first<b.first;
	return a.second<b.second;
}

int N=4;
int K=3;
pii prods[MAX]={{1,1},{10,1},{2,3},{10,3}};
vector<int> W[MAX];
pair<int,pii> dp[MAX];

int main(){
	//*
	cin>>N>>K;
	for (int i=0;i<N;i++) cin>>prods[i].first>>prods[i].second;/**/
	sort(prods,prods+N,comp);
	for (int i=0;i<N;i++){
		W[prods[i].second].push_back(prods[i].first);
	}
	dp[0]={0,{0,0}};
	for (int d=1;d<=N;d++){
		dp[d]=dp[d-1];
		int val=0;
		int i=d;
		for (int j=d-1;j>=0;j--){
			while (i>j && d-i<W[d].size()){
				val+=W[d][d-i];
				i--;
			}
			if (d-i+dp[j].first > dp[d].first || ((d-i+dp[j].first == dp[d].first) && val+dp[j].second.first < dp[d].second.first)){
				dp[d]={dp[j].first+d-i, {dp[j].second.second+val, d}};
			}
		}
	}
	cout<<dp[N].first<<' '<<dp[N].second.first<<'\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...