10466 2024. 04. 03 00:00:01 111 Walking In The Park cpp17 Elfogadva 100/100 119ms 17548 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,M,K;
	cin>>N>>M>>K;
	vector<int>a(N+1),b(M+1);
	for(int i=1;i<=N;i++){
		cin>>a[i];
		a[i]+=a[i-1];
	}
	for(int i=1;i<=M;i++){
		cin>>b[i];
		b[i]+=b[i-1];
	}
	vector<int>z,p(N+1);
	vector<int>s;
	for(int i=1;i<=N;i++){
		if(binary_search(b.begin()+1,b.end(),a[i])){
			auto t=lower_bound(s.begin(),s.end(),a[i]);
			p[i]=t==s.begin()?-1:z[t-s.begin()-1];
			if(t==s.end()){
				z.push_back(i);
				s.push_back(a[i]);
			}
			else{
				z[t-s.begin()]=i;
				*t=a[i];
			}
		}
	}
	if(s.size()<K||z.back()!=N||a[N]!=b[M]){
		cout<<-1<<'\n';
		return 0;
	}
	vector<pair<int,int>>ans;
	for(int i=p[z.back()];i>0;i=p[i]){
		ans.emplace_back(i,lower_bound(b.begin(),b.end(),a[i])-b.begin());
	}
	ans.resize(K-1);
	reverse(ans.begin(),ans.end());
	for(auto[a,b]:ans){
		cout<<a<<' ';
	}
	cout<<'\n';
	for(auto[a,b]:ans){
		cout<<b<<' ';
	}
	cout<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1832 KiB
2 Elfogadva 3ms 2052 KiB
subtask2 19/19
3 Elfogadva 71ms 11396 KiB
4 Elfogadva 72ms 12352 KiB
5 Elfogadva 79ms 14008 KiB
6 Elfogadva 72ms 13072 KiB
7 Elfogadva 79ms 14052 KiB
8 Elfogadva 72ms 13140 KiB
9 Elfogadva 89ms 15896 KiB
subtask3 23/23
10 Elfogadva 3ms 3012 KiB
11 Elfogadva 3ms 3232 KiB
12 Elfogadva 3ms 3272 KiB
13 Elfogadva 3ms 3396 KiB
14 Elfogadva 3ms 3476 KiB
15 Elfogadva 3ms 3612 KiB
subtask4 16/16
16 Elfogadva 3ms 3732 KiB
17 Elfogadva 3ms 3980 KiB
18 Elfogadva 3ms 3944 KiB
19 Elfogadva 3ms 3928 KiB
20 Elfogadva 3ms 4000 KiB
21 Elfogadva 3ms 4004 KiB
22 Elfogadva 3ms 4268 KiB
subtask5 42/42
23 Elfogadva 104ms 13804 KiB
24 Elfogadva 108ms 14444 KiB
25 Elfogadva 112ms 16084 KiB
26 Elfogadva 107ms 14944 KiB
27 Elfogadva 112ms 15916 KiB
28 Elfogadva 108ms 14820 KiB
29 Elfogadva 119ms 17548 KiB