Submission

Status:

[PP][PP][PP][PP][PP][PP][PP][P-][P-][PP]

Subtask/Task Score:

{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}{10/10}{0/10}{0/10}{10/10}

Score: 80

User: FakeAnutin

Problemset: รถขนส่ง

Language: cpp

Time: 0.007 second

Submitted On: 2026-10-09 14:34:16

#include <bits/stdc++.h>
using namespace std;
int main(){
	int oto[301];
	int ott[301];
	int otn[301];
	int 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=1;i<=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];
	}
}