洛谷 U249 匹配

题目描述

输入整数s和两个整数集合A和B,从这A和B中各取一个数,如果它们的和等于s,称为“匹配”。编程统计匹配的总次数

输入输出格式

输入格式:

 

第一行为三个整数s(0<s≤10000)、n和m(0<n,m≤50000),其中n和m分别表示A和B集合中的元素个数;第二行表示集合A,一共n个整数ai(|ai|≤30000),以空格隔开;第三行表示集合B,一共m个整数bi(|bi|≤30000),以空格隔开

 

输出格式:

 

仅一个正整数,表示总次数

 

输入输出样例

输入样例#1:
10000 4 3
-175 19 19 10424
8951 -424 -788
输出样例#1:
1
#include<iostream>
#include<set>
#include<map>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
set<int>se;
map<int,int>ma;
int s,n,m,ans,a[50001],b[50001];
int main(){
    scanf("%d%d%d",&s,&n,&m);
    for(int i=1;i<=n;i++)    scanf("%d",&a[i]);
    for(int i=1;i<=m;i++){
        scanf("%d",&b[i]);
        se.insert(b[i]);
        ma[b[i]]++;
    }
    for(int i=1;i<=n;i++){
        int x=s-a[i];
        if(se.find(x)!=se.end())
            ans+=ma[x];
    }
    cout<<ans;
}

 

 
posted @ 2017-09-05 15:45  一蓑烟雨任生平  阅读(168)  评论(0编辑  收藏  举报