Submission #646134

#TimeUsernameProblemLanguageResultExecution timeMemory
646134PagodePaivaSelf Study (JOI22_ho_t2)C++14
62 / 100
91 ms12640 KiB
#include<bits/stdc++.h>
#define int long long 
#define ms(v) memset(v, -1, sizeof v)
#define pi pair<int, int>
#define pb push_back
#define fr first
#define sc second
#define srt(v) sort(v.begin(), v.end())
#define INF 1e15
#define N 300010

using namespace std;

int n, m;
int a[N], b[N];
int cnt[N];

int32_t main(){
	ios::sync_with_stdio(false); cin.tie(0);
	cin >> n >> m;	
	int penis = n*m;

	assert(penis <= 300000);

	priority_queue <pi> q;
	for(int i = 1;i <= n;i++){
		q.push({0, i});
	}

	for(int i = 1;i <= n;i++){
		cin >> a[i];
	}

	for(int i = 1;i <= n;i++){
		cin >> b[i];
		cnt[i] = m;
	}

	if(m == 1){
		int mint = INF;
		for(int i = 1;i <= n;i++){
			int maxt = max(a[i], b[i]);
			if(maxt < mint) mint = maxt;
		}

		cout << mint << "\n";
		return 0;
	}

	for(int i = 0;i < m;i++){
		for(int j = 1;j <= n;j++){
			int p = -q.top().fr;
			int v = q.top().sc;
			q.pop();
			if(cnt[v] > 0 and a[v] > b[v]){
				cnt[v]--;
				q.push({-(p+a[v]), v});
			}
			else q.push({-(p+b[v]), v});
		}
	}

	cout << -q.top().fr << "\n";

	return 0;	
}
#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...