有一个n行m列的二维表格,行的标号从1至n,列的编号从1至m。每个格子都有一个数。小明和小军玩双人选数游戏。小明总共选择了不同的k行,他把这k行的所有的数都累加起来,存到变量sum1。小军总共选择了不同的c列,他把这c列的所有数都累加起来,存到变量sum2。你的任务是计算ans = sum1+sum2的结果,但是如果一个格子的数同时被小明和小军选中,那么只能算一次,不能算两次,因此要从ans减去那些同时被两人选中的格子的数,然后输出ans。
输入格式 第一行,四个整数,n、m、k、c。1<=n,m<=100。1<=k<=n, 1<=c<=m。
接下来是n行,每行有m个整数,每个整数范围[1,1000]。
接下来一行有k个数,表示小明选中了哪些行。
最后一行有c个数,表示小军选中了哪些列。
输出格式 一个整数,表示小明和小军总共选中的数的总和,但是同时被两人选中的格子的数只算一次。
输入/输出例子1 输入:
4 5 2 2
1 3 4 5 2
4 6 7 8 9
3 9 2 4 5
3 2 4 2 6
1 3
2 4
输出:
56
#include<bits/stdc++.h>
using namespace std;
int main(){
int x[11111][11111];
int aa[1111],bb[1111];
int n,m,q,c,s=0;
cin>>n>>m>>q>>w;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>x[i][j];
}
}
for(int i=1;i<=q;i++)
{
cin>>aa[i];
for(int j=1;j<=m;j++)
{
s+=x[aa[i]][i];
}
}
for(int i=1;i<=w;i++)
{
cin>>bb[i];
for(int j=1;j<=n;j++)
{
s+=x[i][bb[i]];
}
}
for(int i=1;i<=q;i++)
{
for(int j=1;j<=w;j++)
{
s-=x[aa[i]][bb[j]];
}
}
cout<<s;
return 0;
}