记录编号 |
351480 |
评测结果 |
AAAAAAAAAA |
题目名称 |
冰桥,升起来了! |
最终得分 |
100 |
用户昵称 |
coolkid |
是否通过 |
通过 |
代码语言 |
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;
}