235342026-01-24 12:07:59KateTaylorWalking In The Parkcpp17Hibás válasz 19/100331ms21160 KiB
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

typedef long long ll;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	int n, m, k;
	cin >> n >> m >> k;
	vector<ll> a(n), b(m);
	vector<pair<ll, int>> v;
	map<ll, int> pos;
	cin >> a[0];
	for (int i = 1; i < n; i++) {
		cin >> a[i];
		a[i] += a[i - 1];
	}
	cin >> b[0];
	pos[b[0]] = 0;
	for (int i = 1; i < m; i++) {
		cin >> b[i];
		b[i] += b[i - 1];
		pos[b[i]] = i;
	}
	if (a.back() != b.back()) {
		cout << -1;
		return 0;
	}
	for (int i = 0; i < n; i++) {
		if (!pos.count(a[i])) continue;
		v.push_back({ pos[a[i]], i });
	}
	vector<pair<ll, int>> dp = { {(ll)1e18, 1e9} };
	vector<int> par(n, -1);
	for (auto p : v) {
		int i = p.second, x = p.first;
		int pp = lower_bound(dp.begin(), dp.end(), make_pair((ll)x, i)) - dp.begin();
		if (pp == dp.size() - 1) {
			dp[pp] = p;
			dp.push_back({ (ll)1e18, 1e9 });
		}
		else dp[pp] = p;
		if (pp) par[i] = dp[pp - 1].second;
	}
	vector<int> ans;
	int curr = n - 1;
	while (ans.size() < k && curr != -1) {
		ans.push_back(curr);
		curr = par[curr];
	}
	if (ans.size() < k) {
		cout << -1;
		return 0;
	}
	reverse(ans.begin(), ans.end());
	ans.pop_back();
	for (int x : ans) cout << ++x << " ";
	cout << "\n";
	for (int x : ans) cout << pos[a[x]] + 1 << " ";
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask219/19
3Elfogadva170ms16892 KiB
4Elfogadva172ms17132 KiB
5Elfogadva184ms17772 KiB
6Elfogadva165ms17808 KiB
7Elfogadva174ms17980 KiB
8Elfogadva128ms15924 KiB
9Elfogadva201ms19240 KiB
subtask30/23
10Elfogadva2ms508 KiB
11Elfogadva2ms316 KiB
12Elfogadva2ms316 KiB
13Hibás válasz2ms500 KiB
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
subtask40/16
16Hibás válasz2ms672 KiB
17Hibás válasz2ms316 KiB
18Hibás válasz2ms316 KiB
19Elfogadva1ms316 KiB
20Hibás válasz2ms316 KiB
21Elfogadva1ms316 KiB
22Hibás válasz2ms316 KiB
subtask50/42
23Hibás válasz326ms18340 KiB
24Hibás válasz284ms18616 KiB
25Elfogadva331ms19620 KiB
26Elfogadva287ms19288 KiB
27Hibás válasz273ms19552 KiB
28Elfogadva142ms15924 KiB
29Hibás válasz277ms21160 KiB