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...