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: Accepted

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 = [set() 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].add(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: Accepted

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

hcount = [0 for i in range(H+1)]
wcount = [0 for i in range(W+1)]
hw = [list(map(int,input().split())) for i in range(M)]

for i in range(M):
    h,w = hw[i]
    hcount[h]+=1
    wcount[w]+=1

ansh = max(hcount)
answ = max(wcount)#おいてない前提
counth=0
countw=0
for i in range(H+1):
    if hcount[i]==ansh:
        counth+=1

for i in range(W+1):
    if wcount[i]==answ:
        countw+=1

countM = 0
for i in range(M):
    if hcount[hw[i][0]]+wcount[hw[i][1]] == ansh+answ:
        countM+=1
print(ansh+answ if countM < counth*countw else ansh +answ -1)

Submission status: Accepted

Solution code:
import bisect, collections, copy, heapq, itertools, math, string, sys
input = lambda: sys.stdin.readline().rstrip() 
sys.setrecursionlimit(10**7)
INF = float('inf')
def I(): return int(input())
def F(): return float(input())
def SS(): return input()
def LI(): return [int(x) for x in input().split()]
def LI_(): return [int(x)-1 for x in input().split()]
def LF(): return [float(x) for x in input().split()]
def LSS(): return input().split()

def resolve():
    H, W, M = LI()
    hw = [LI() for _ in range(M)]
    hw_set = set([(h, w) for h, w in hw])

    cnt_h = collections.Counter([h for h, w in hw])
    cnt_w = collections.Counter([w for h, w in hw])

    # i行目にはどの列にあります
    # print(cnt_h)
    # print(cnt_w)
    max_h = max(cnt_h.values())
    max_w = max(cnt_w.values())
    max_h_k = [k for k, v in cnt_h.items() if v == max_h]
    max_w_k = [k for k, v in cnt_w.items() if v == max_w]
    is_on_target = True
    for i, j in itertools.product(max_h_k, max_w_k):
        if (i, j) not in hw_set:
            is_on_target = False
            break

    if is_on_target:
        ans = max_h + max_w - 1
    else:
        ans = max_h + max_w
    print(ans)

if __name__ == '__main__':
    resolve()

Submission status: Accepted

Solution code:
import copy


H, W, M = map(int, input().split())
hw1 = [tuple(map(int, input().split())) for _ in range(M)]
hw2 = copy.deepcopy(hw1)
ans1 = 0
ans2 = 0

# hから見る
h_cnt = [0 for _ in range(3*10**5 + 3)]
w_cnt = [0 for _ in range(3*10**5 + 3)]
for h, w in hw1:
    h_cnt[h] += 1
    w_cnt[w] += 1

h_max = -1
h_idx = 999999999999

for i in range(len(h_cnt)):
    if h_cnt[i] > h_max:
        h_max = h_cnt[i]
        h_idx = i
    elif h_cnt[i] == h_max:
        if w_cnt[i] > w_cnt[h_idx]:
            h_idx = i


L = []
for i in range(len(hw1)):
    h, w = hw1[i]
    if h == h_idx:
        ans1 += 1
        L.append(hw1[i])

hw1 = list(set(hw1) - set(L))

w_cnt = [0 for _ in range(3*10**5 + 3)]
for h, w in hw1:
    w_cnt[w] += 1

w_max = -1
w_idx = 999999999999
for i in range(len(w_cnt)):
    if w_cnt[i] > w_max:
        w_max = w_cnt[i]
        w_idx = i

for h, w in hw1:
    if w == w_idx:
        ans1 += 1


# wから見る
w_cnt = [0 for _ in range(3*10**5 + 3)]
h_cnt = [0 for _ in range(3*10**5 + 3)]

for h, w in hw2:
    h_cnt[w] += 1

w_max = -1
w_idx = 999999999999

for i in range(len(w_cnt)):
    if w_cnt[i] > w_max:
        w_max = w_cnt[i]
        w_idx = i
    elif w_cnt[i] == w_max:
        if h_cnt[i] > h_cnt[w_idx]:
            w_idx = i


L = []
for i in range(len(hw2)):
    h, w = hw2[i]
    if w == w_idx:
        ans2 += 1
        L.append(hw2[i])

hw2 = list(set(hw2) - set(L))

h_cnt = [0 for _ in range(3*10**5 + 3)]
for h, w in hw2:
    h_cnt[h] += 1

h_max = -1
h_idx = 999999999999
for i in range(len(h_cnt)):
    if h_cnt[i] > h_max:
        h_max = h_cnt[i]
        h_idx = i
for h, w in hw2:
    if h == h_idx:
        ans2 += 1


print(max(ans1, ans2))

Submission status: Accepted

Solution code:
h, w, m = map(int, input().split())
nh = [0 for i in range(h)]
nw = [0 for j in range(w)]
bomb = [set() for i in range(h)]
for i in range(m):
    inp = list(map(int, input().split()))
    nh[inp[0] - 1] += 1
    nw[inp[1] - 1] += 1
    bomb[inp[0]-1].add(inp[1]-1)
maxh = max(nh)
maxw = max(nw)
counth = 0
countw = 0
hlis = []
wlis = []
for j in range(h):
    if nh[j] == maxh:
        counth += 1
        hlis.append(j)
for i in range(w):
    if nw[i] == maxw:
        countw += 1
        wlis.append(i)
if counth * countw > m:
    print(maxh + maxw)
    exit()
else:
    for j in hlis:
        for i in wlis:
            flag = False
            if i in bomb[j]:
                flag = True
            if not flag:
                print(maxh + maxw)
                exit()
    else:
        print(maxh + maxw - 1)

Submission status: Accepted

Solution code:
#!/usr/bin/env python3

import sys
import math
from bisect import bisect_right as br
from bisect import bisect_left as bl
sys.setrecursionlimit(2147483647)
from heapq import heappush, heappop,heappushpop
from collections import defaultdict
from itertools import accumulate
from collections import Counter
from collections import deque
from operator import itemgetter
from itertools import permutations
mod = 10**9 + 7
inf = float('inf')
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))

h, w, m = LI()
bomb = defaultdict(lambda : 0)
cnt_h = [0] * h
cnt_w = [0] * w
for _ in range(m):
    H, W = LI()
    bomb[(H-1, W-1)] = 1
    cnt_h[H-1] += 1
    cnt_w[W-1] += 1

m_h = max(cnt_h)
m_w = max(cnt_w)
H_l = defaultdict(int)
W_l = defaultdict(int)
for i in range(h):
    if cnt_h[i] == m_h:
        H_l[i] = 1

for i in range(w):
    if cnt_w[i] == m_w:
        W_l[i] = 1

ans = m_h + m_w

for i in H_l.keys():
    for j in W_l.keys():
        if bomb[(i, j)] == 0:
            print(ans)
            quit()

print(ans-1)

Submission status: Accepted

Solution code:
import sys

input = sys.stdin.readline


def main():
    H, W, M = map(int, input().split())
    row = [0] * (H)
    col = [0] * (W)
    bomb = set()
    for _ in range(M):
        h, w = map(int, input().split())
        bomb.add((h, w))
        row[h-1] += 1
        col[w-1] += 1
    row_max = max(row)
    row_index_list = [i for i, v in enumerate(row) if v == row_max]
    col_max = max(col)
    col_index_list = [i for i, v in enumerate(col) if v == col_max]
    ans = row_max + col_max - 1
    c = False
    for x in row_index_list:
        for y in col_index_list:
            if not (x + 1, y + 1) in bomb:
                c = True
                break
        if c:
            break
    if c:
        ans += 1
    print(ans)


if __name__ == '__main__':
    main()