Загрузка данных


import sys

def solve():
    input_data = sys.stdin.read().split()
    if not input_data:
        return
    
    n = int(input_data[0])
    m = int(input_data[1])
    q = int(input_data[2])
    
    # Для каждого столбца от 1 до m найдем минимальный x среди всех запросов, у которых y <= столбца.
    # Инициализируем бесконечностью (n + 1)
    min_x = [n + 1] * (m + 1)
    
    idx = 3
    for _ in range(q):
        x = int(input_data[idx])
        y = int(input_data[idx+1])
        idx += 2
        if x < min_x[y]:
            min_x[y] = x
            
    # Распространяем влияние полива направо (поскольку полив в точке (x, y) захватывает все j >= y)
    # Значит, минимальный x для столбца j будет зависеть от минимального x среди всех столбьев <= j
    current_min = n + 1
    for j in range(1, m + 1):
        if min_x[j] < current_min:
            current_min = min_x[j]
        min_x[j] = current_min
        
    # Считаем количество политых клеток
    total_polited = 0
    for j in range(1, m + 1):
        if min_x[j] <= n:
            # Если столбец поливается начиная со строки min_x[j] до n,
            # то в этом столбце полито (n - min_x[j] + 1) клеток.
            total_polited += (n - min_x[j] + 1)
            
    total_cells = n * m
    ans = total_cells - total_polited
    print(ans)

if __name__ == '__main__':
    solve()