Submission
Status:
[PP][PP][PP][PP][PP][PP][PP][PP][PP][PP]
Subtask/Task Score:
{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}
Score: 100
User: FakeAnutin
Problemset: รถขนส่ง
Language: cpp
Time: 0.005 second
Submitted On: 2026-10-09 14:45:38
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ll oto[301];
ll ott[301];
ll otn[301];
ll ttn[301];
int m,n; cin>>m>>n;
for(int i=1;i<=m;i++){
cin>>oto[i];
}
for(int i=1;i<=m;i++){
cin>>ott[i];
}
for(int i=1;i<=m;i++){
cin>>otn[i];
}
for(int i=1;i<=m;i++){
cin>>ttn[i];
}
sort(oto + 1,oto + m + 1);
sort(ott + 1,ott + m + 1);
sort(otn + 1,otn + m + 1);
sort(ttn + 1,ttn + m + 1);
if(n == 2*m){
vector<int> da;
for(int i=1;i<=m;i++){
int k=oto[i] + otn[m-i+1];
da.push_back(k);
}
for(int i=1;i<=m;i++){
int k=ott[i] + ttn[m-i+1];
da.push_back(k);
}
sort(da.begin(),da.end());
cout<<da[n-1];
}
else if(n == 1){
cout<<min(oto[1]+otn[1],ott[1]+ttn[1]);
}else{
vector<int> moa;
for(int i=0;i<=min(m,n);i++){
int y=n-i;
vector<int> dp;
for(int j=1;j<=i;j++){
int k=oto[j] + otn[i-j+1];
dp.push_back(k);
}
for(int j=1;j<=y;j++){
int k=ott[j] + ttn[y-j+1];
dp.push_back(k);
}
sort(dp.begin(),dp.end());
moa.push_back(dp[n-1]);
}
sort(moa.begin(),moa.end());
cout<<moa[0];
}
}