Problem:


Score : 500 points

Problem Statement

We have a two-dimensional grid with H \times W squares. There are M targets to destroy in this grid - the position of the i-th target is \left(h_i, w_i \right).

Takahashi will choose one square in this grid, place a bomb there, and ignite it. The bomb will destroy all targets that are in the row or the column where the bomb is placed. It is possible to place the bomb at a square with a target.

Takahashi is trying to maximize the number of targets to destroy. Find the maximum number of targets that can be destroyed.

Constraints

All values in input are integers.

1 \leq H, W \leq 3 \times 10^5

1 \leq M \leq \min\left(H\times W, 3 \times 10^5\right)

1 \leq h_i \leq H

1 \leq w_i \leq W

\left(h_i, w_i\right) \neq \left(h_j, w_j\right) \left(i \neq j\right)

Input

Input is given from Standard Input in the following format:

H W M
h_1 w_1
\vdots
h_M w_M

Output

Print the answer.

Sample Input 1

2 3 3
2 2
1 1
1 3

Sample Output 1

3

We can destroy all the targets by placing the bomb at \left(1, 2\right).

Sample Input 2

3 3 4
3 3
3 1
1 1
1 2

Sample Output 2

3

Sample Input 3

5 5 10
2 5
4 3
2 3
5 5
2 2
5 4
5 3
5 1
3 5
1 4

Sample Output 3

6



Sample input:
2 3 3
2 2
1 1
1 3


Sample output:
3

Submission status: Time Limit Exceeded

Solution code:
H, W, M = map(int, input().split())
P = [list(map(int,input().split())) for i in range(M)]

column = [0] * H
row = [0] * W

for item in P:
  column[item[0] -1] += 1
  row[item[1] -1] += 1
  
co_max = sorted(column, reverse=True)[0]
ro_max = sorted(row, reverse=True)[0]

if M >= 2:
  if co_max == 1 and ro_max == 1 and sorted(column, reverse=True)[1] == 1 and sorted(row, reverse=True)[1] == 1:
    print(2)
  else:
    column_max = [i for i, x in enumerate(column) if x == co_max]
    row_max = [i for i, x in enumerate(row) if x == ro_max]

    flag = 0
    for i in column_max:
      for j in row_max:
        if [i+1, j+1] not in P:
          flag = 1
          break
    if flag == 1:
      print(max(column) + max(row))
    elif flag == 0:
      print(max(column) + max(row) -1)
else:
  column_max = [i for i, x in enumerate(column) if x == co_max]
  row_max = [i for i, x in enumerate(row) if x == ro_max]

  flag = 0
  for i in column_max:
    for j in row_max:
      if [i+1, j+1] not in P:
        flag = 1
        break
  if flag == 1:
    print(max(column) + max(row))
  elif flag == 0:
    print(max(column) + max(row) -1)

Submission status: Time Limit Exceeded

Solution code:
h,w,m=map(int,input().split())

max_h=[0 for i in range(h+1)]
max_w=[0 for i in range(w+1)]
grid=[[0 for i in range(w)] for j in range(h)]
#pro=[list(map(int,input().split())) for i in range(m)]
#pro.sort()
for t in range(m):
    #h=pro[t][0]
   # w=pro[t][1]
    h,w=map(int,input().split())
    max_h[h]+=1
    max_w[w]+=1
    grid[h-1][w-1]=1
h_max=[i for i, x in enumerate(max_h) if x == max(max_h)]
w_max=[i for i, x in enumerate(max_w) if x == max(max_w)]

ans=0
for i in h_max:
    for j in w_max:
        cnt=0
        cnt +=list(zip(*grid))[j-1].count(1)
        cnt += grid[i-1].count(1)
        '''
        for k in range(h):
            if grid[k][j-1]==1:
                cnt += 1
        for l in range(w):
            if grid[i-1][l]==1:
                cnt += 1
        '''
        if grid[i-1][j-1]==1:
            cnt -= 1
        
        if cnt > ans:
            ans=cnt
print(ans)

Submission status: Time Limit Exceeded

Solution code:
import collections
H,W,M=map(int,input().split())
h=[None]*M
w=[None]*M
for i in range(M):
    h[i],w[i]=map(int,input().split())
c1=collections.Counter(h)
c2=collections.Counter(w)
cnt=0
ans=0
for i in range(min(len(c1),20)):
    for j in range(min(len(c2),20)):
        for x in range(M):
            flag=True
            if h[x]==c1.most_common()[i][0] and w[x]==c2.most_common()[j][0]:
                ans=max(ans,c1.most_common()[i][1]+c2.most_common()[j][1]-1)
                flag=False
                break
        if flag:
            ans=max(ans,c1.most_common()[i][1]+c2.most_common()[j][1])
print(ans)

Submission status: Time Limit Exceeded

Solution code:
import collections
def resolve():
    H, W, N = map(int, input().split())
    H_list = [0]*N
    W_list = [0]*N
    for i in range(N):
        H_list[i], W_list[i] = map(int, input().split())
    # 行、列ごとにカウントする
    # 行、列が一番大きい場所を候補とする。
    # 爆弾がターゲットとかぶっている場合は行+列-1となるのでそのチェックを行う。
    # 候補複数ある場合は複数箇所で探索
    H_counter = collections.Counter(H_list)
    W_counter = collections.Counter(W_list)
    H_max = max(H_counter.values())
    W_max = max(W_counter.values())

    # maxになっている行、列のリストを得る
    H_max_counter_index = [counter_index for counter_index, x in enumerate(H_counter.values()) if x == H_max]
    W_max_counter_index = [counter_index for counter_index, x in enumerate(W_counter.values()) if x == W_max]
    H_counter_keys_list = list(H_counter.keys())
    W_counter_keys_list = list(W_counter.keys())
    H_max_keys = [H_counter_keys_list[i] for i in H_max_counter_index]
    W_max_keys = [W_counter_keys_list[i] for i in W_max_counter_index]
    possible_max_answer = H_max + W_max
    answer = possible_max_answer - 1

    for h in H_max_keys:
        h_indices_set = set([i for i, x in enumerate(H_list) if x == h])
        for w in W_max_keys:
            w_indices_set = set([i for i, x in enumerate(W_list) if x == w])
            if len(h_indices_set | w_indices_set) == possible_max_answer:
                answer = possible_max_answer
                break
        else:
            continue
        break
    print(answer)
resolve()

Submission status: Time Limit Exceeded

Solution code:
# compiled by pythran
"""
#pythran export main2()
import numpy as np
i4 = np.int32
i8 = np.int64


def solve(h, w, l, H, W):
    h_max = []
    w_max = []
    hm = h.max()
    wm = w.max()
    for i in range(H + 1):
        if h[i] == hm:
            h_max.append(i)
    for i in range(W + 1):
        if w[i] == wm:
            w_max.append(i)
    for hj in h_max:
        for wj in w_max:
            if not wj in l[hj]:
                return hm + wm
    return hm + wm - 1


def main(in_file):
    stdin = open(in_file)
    H, W, M = [int(x) for x in stdin.readline().split()]
    h = np.zeros(H + 1, i8)
    w = np.zeros(W + 1, i8)
    l = [[] for _ in range(H + 1)]
    for _ in range(M):
        hi, wi = [int(x) for x in stdin.readline().split()]
        h[hi] += 1
        w[wi] += 1
        l[hi].append(wi)
    ans = solve(h, w, l, H, W)
    print(ans)


def main2():
    main('/dev/stdin')




"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'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'
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)

Submission status: Time Limit Exceeded

Solution code:
H,W,M = map(int, input().split())
obj = []
for i in range(M):
    obj.append(list(map(int,input().split())))

wl = [0]*W
hl = [0]*H

for m in range(M):
    hn = obj[m][0]-1
    wn = obj[m][1]-1
    hl[hn] = hl[hn] + 1
    wl[wn] = wl[wn] + 1
    
mhl = [a for a, b in enumerate(hl) if b == max(hl)]
mwl = [a for a, b in enumerate(wl) if b == max(wl)]

c = []

for d in range(len(mhl)):
    for e in range(len(mwl)):
        if [mhl[d]+1,mwl[e]+1] in obj:
            c.append(1)
        else:
            c.append(0)
            continue
if min(c)>0:
    print(int(max(hl)+max(wl)-1))
else:
    print(int(max(hl)+max(wl)))

Submission status: Time Limit Exceeded

Solution code:
def resolve():
    h,w,m  = map(int, input().split())
    hm = [0]*m
    wm=[0]*m
    hwm=[]
    hw = [[0 for i in range(w+1)] for j in range(h+1)]
    for i in range(m):
        hm[i], wm[i] = map(int, input().split())
        hw[hm[i]][wm[i]]=1
        hwm.append([hm[i],wm[i]])

    ww=[0]*(h+1)
    hh=[0]*(w+1)
    for i in range(m):
        ww[hm[i]]+=1
    for i in range(m):
        hh[wm[i]]+=1

    hmax=max(ww)
    wmax=max(hh)

    hichi=[i for i, v in enumerate(ww) if v == hmax]
    wichi=[i for i, v in enumerate(hh) if v == wmax]

    ch=1
    for i in hichi:
        for j in wichi:
            if [i,j] not in hwm:
                ch=0


    print(hmax+wmax-ch)
resolve()

Submission status: Time Limit Exceeded

Solution code:
import collections

H, W, M = map(int, input().split())

h, w = [0]*M, [0]*M
for i in range(M):
    h[i], w[i] = map(int, input().split())

counter = collections.Counter(h)
h_max = max(counter.values())
mode_h = [key for key , value in counter.items() if value == h_max]
counter = collections.Counter(w)
w_max = max(counter.values())
mode_w = [key for key , value in counter.items() if value == w_max]

ans = 0
for i in mode_h:
    for j in mode_w:
        if ans == H + W - 1 or ans == M:
            print(ans)
            exit()
        if ans < h.count(i) + w.count(j):
            ans = h.count(i) + w.count(j)
            for k in range(M):
                if h[k] == i and w[k] == j:
                    ans -= 1

print(ans)

Submission status: Time Limit Exceeded

Solution code:
import collections
h,w,m=map(int,input().split())
data_h=[]
data_w=[]
data=[]
for i in range(m):
    h_,w_=map(int,input().split())
    data_h.append(h_)
    data_w.append(w_)
    data.append([h_,w_])
    
counted_h = collections.Counter(data_h)
s = max(counted_h.values())
index_h = [key for key, value in counted_h.items()
             if value == s]

counted_w = collections.Counter(data_w)
l = max(counted_w.values())
index_w = [key for key, value in counted_w.items()
             if value == l]

for d in index_h:
    for f in index_w:
        if [d,f] not in data:
            print(data_h.count(d)+data_w.count(f))
            exit()

print(data_h.count(index_h[0])+data_w.count(index_w[0])-1)