记录编号 351480 评测结果 AAAAAAAAAA
题目名称 冰桥,升起来了! 最终得分 100
用户昵称 Gravatarcoolkid 是否通过 通过
代码语言 C++ 运行时间 0.124 s
提交时间 2016-11-16 16:34:29 内存使用 7.18 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

#define mp make_pair
#define fi first
#define se second

const int MAXN=300010;
typedef pair<int,int> pii;
pii Index[MAXN];
int StatusA[MAXN],StatusB[MAXN];
int A,B,K;
int QAQ[MAXN],qaq[MAXN];

void init(){
	scanf("%d%d%d",&A,&B,&K);
	for(int i=1;i<=A;i++) scanf("%d",&QAQ[i]);
	for(int i=1;i<=B;i++) scanf("%d",&qaq[i]);
	for(int i=1;i<=K;i++) scanf("%d%d",&Index[i].fi,&Index[i].se);
}

void work(){
	sort(Index+1,Index+1+K);
	for(int i=1;i<=A;i++) StatusA[i]=QAQ[i];
	for(int i=1;i<=B;i++) StatusB[i]=qaq[i];
	for(int i=1;i<=K;i++){
		int a=Index[i].fi,b=Index[i].se;
		int Sa=StatusA[a],Sb=StatusB[b];
		StatusA[a]=max(StatusA[a],Sb+QAQ[a]);
		StatusB[b]=max(StatusB[b],Sa+qaq[b]);
	}
	int ans=0;
	for(int i=1;i<=A;i++) ans=max(ans,StatusA[i]);
	for(int i=1;i<=B;i++) ans=max(ans,StatusB[i]);
	cout<<ans<<endl;
}

int main(){
	freopen("meibridge.in","r",stdin);
	freopen("meibridge.out","w",stdout);
	init();
	work();
	return 0;
}