104662024-04-03 00:00:01111Walking In The Parkcpp17Elfogadva 100/100119ms17548 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2052 KiB
subtask219/19
3Elfogadva71ms11396 KiB
4Elfogadva72ms12352 KiB
5Elfogadva79ms14008 KiB
6Elfogadva72ms13072 KiB
7Elfogadva79ms14052 KiB
8Elfogadva72ms13140 KiB
9Elfogadva89ms15896 KiB
subtask323/23
10Elfogadva3ms3012 KiB
11Elfogadva3ms3232 KiB
12Elfogadva3ms3272 KiB
13Elfogadva3ms3396 KiB
14Elfogadva3ms3476 KiB
15Elfogadva3ms3612 KiB
subtask416/16
16Elfogadva3ms3732 KiB
17Elfogadva3ms3980 KiB
18Elfogadva3ms3944 KiB
19Elfogadva3ms3928 KiB
20Elfogadva3ms4000 KiB
21Elfogadva3ms4004 KiB
22Elfogadva3ms4268 KiB
subtask542/42
23Elfogadva104ms13804 KiB
24Elfogadva108ms14444 KiB
25Elfogadva112ms16084 KiB
26Elfogadva107ms14944 KiB
27Elfogadva112ms15916 KiB
28Elfogadva108ms14820 KiB
29Elfogadva119ms17548 KiB