测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A22935. 交叉和

填空题 困难

题目描述

交叉和

题目描述

有一个 h 行 w 列的网格。从上往下第 i 行、从左往右第 j 列的格子 (i,j)(i,j) 中写有整数 Ai,j ​。对于所有格子 (i,j)(i,j),请计算以下值:

与格子 (i,j)(i,j)在同一行或同一列的所有格子中写的整数的总和。

输入格式

第一行:两个整数 h和w,表示行数和列数。

接下来有 h 行:每行 w 个整数,表示aij

输出格式

输出共 h 行,每行 w 个整数。

相邻两个整数之间用单个空格隔开。

输入样例#1

3 3
1 1 1
2 2 2
3 3 3

输出样例#1

8 8 8 
10 10 10 
12 12 12 

输入样例#2

2 10
3 1 4 1 5 9 2 6 5 3
5 8 9 7 9 3 2 3 8 4

输出样例#2

44 47 48 46 48 42 41 42 47 43 
61 59 62 59 63 67 60 64 63 61

数据范围

2≤h,w≤20002≤h,w≤2000

1≤aij≤991≤aij​≤99

参考答案

#include <bits/stdc++.h> using namespace std; typedef long long ll; const int INF = 1e9; int h, w, ans, a[2010][2010], s1[2010], s2[2010]; int main(){ scanf("%d%d", &h, &w); for(int i = 1; i <= h; i++) for(int j = 1, x; j <= w; j++) scanf("%d", &x), a[i][j] = x, s1[i] += x, s2[j] += x; for(int i = 1; i <= h; i++){ for(int j = 1; j <= w; j++) printf("%d ", s1[i] + s2[j] - a[i][j]); puts(""); } return 0; }
上一题 下一题