Codeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers

C. Skyscrapers

time limit per test

2 seconds

memory limit per test

512 megabytes

input

standard input

output

standard output

Dora loves adventures quite a lot. During some journey she encountered an amazing city, which is formed by nn streets along the Eastern direction and mm streets across the Southern direction. Naturally, this city has nmnm intersections. At any intersection of ii-th Eastern street and jj-th Southern street there is a monumental skyscraper. Dora instantly became curious and decided to explore the heights of the city buildings.

When Dora passes through the intersection of the ii-th Eastern and jj-th Southern street she examines those two streets. After Dora learns the heights of all the skyscrapers on those two streets she wonders: how one should reassign heights to the skyscrapers on those two streets, so that the maximum height would be as small as possible and the result of comparing the heights of any two skyscrapers on one street wouldn't change.

Formally, on every of nmnm intersections Dora solves an independent problem. She sees n+m−1n+m−1 skyscrapers and for each of them she knows its real height. Moreover, any two heights can be compared to get a result "greater", "smaller" or "equal". Now Dora wants to select some integer xx and assign every skyscraper a height from 11 to xx. When assigning heights, Dora wants to preserve the relative order of the skyscrapers in both streets. That is, the result of any comparison of heights of two skyscrapers in the current Eastern street shouldn't change and the result of any comparison of heights of two skyscrapers in current Southern street shouldn't change as well. Note that skyscrapers located on the Southern street are not compared with skyscrapers located on the Eastern street only. However, the skyscraper located at the streets intersection can be compared with both Southern and Eastern skyscrapers. For every intersection Dora wants to independently calculate the minimum possible xx.

For example, if the intersection and the two streets corresponding to it look as follows:

Codeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers_第1张图片

Then it is optimal to replace the heights of the skyscrapers as follows (note that all comparisons "less", "equal", "greater" inside the Eastern street and inside the Southern street are preserved)

Codeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers_第2张图片

The largest used number is 55, hence the answer for this intersection would be 55.

Help Dora to compute the answers for each intersection.

Input

The first line contains two integers nn and mm (1≤n,m≤10001≤n,m≤1000) — the number of streets going in the Eastern direction and the number of the streets going in Southern direction.

Each of the following nn lines contains mm integers ai,1ai,1, ai,2ai,2, ..., ai,mai,m (1≤ai,j≤1091≤ai,j≤109). The integer ai,jai,j, located on jj-th position in the ii-th line denotes the height of the skyscraper at the intersection of the ii-th Eastern street and jj-th Southern direction.

Output

Print nn lines containing mm integers each. The integer xi,jxi,j, located on jj-th position inside the ii-th line is an answer for the problem at the intersection of ii-th Eastern street and jj-th Southern street.

Examples

input

Copy

2 3
1 2 1
2 1 2

output

Copy

2 2 2 
2 2 2 

input

Copy

2 2
1 2
3 4

output

Copy

2 3 
3 2 

Note

In the first example, it's not possible to decrease the maximum used height for the problem at any intersection, hence we don't have to change any heights.

In the second example, the answers are as follows:

  • For the intersection of the first line and the first columnCodeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers_第3张图片
  • For the intersection of the first line and the second columnCodeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers_第4张图片
  • For the intersection of the second line and the first columnCodeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers_第5张图片
  • For the intersection of the second line and the second columnCodeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers_第6张图片

思维题;

自己模拟其中一行和一列就能发现规律

最大值一定是当前值所在行列区间(去重复且有序)的第i,j小的最大值,加上行列所有值中大于当前值的个数in,jn的最大值。

unique是去重函数,参数和sort类似。

例如1 1 3 4 4,unique(a,a+5)后是 :  1 3 4 1 4;

返回值减去a的结果是不重复元素的个数,这里是3;

#include 
const int M = 100000+100;
using namespace std;
int n,m, z[1005][1005], a[1005][1005], b[1005][1005], tpa[1005], tpb[1005];
int main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j = 1; j<=m;j++ )
            cin>>z[i][j],a[i][j]=b[j][i]=z[i][j];
    int al,bl;
    for(int i = 1; i<=n;i++)
    {
        sort(a[i]+1,a[i]+1+m);
        tpa[i]=unique(a[i]+1,a[i]+m+1)-(a[i]+1);
        //cout<

 

你可能感兴趣的:(技巧思维题)