binary search data structures dp greedy sortings two pointers *1700

Please click on ads to support us..

Python Code:

import sys
input = sys.stdin.readline

def readList():
    return list(map(int, input().split()))
def readInt():
    return int(input())
def readInts():
    return map(int, input().split())
def readStr():
    return input().strip()

def solve():
    n, arr, m = readInt(), readList(), readInt()
    power = [0] * (n+1)
    for _ in range(m):
        p, s = readInts()
        power[s] = max(power[s], p)
    for i in range(n-1, 0, -1):
        power[i] = max(power[i], power[i+1])

    if max(arr) > power[1]:
        return -1

    cnt, cp, ans = 0, 0, 1
    for i in range(n):
        cp = max(cp, arr[i])
        if cp <= power[cnt+1]:
            cnt += 1
        else:
            ans += 1
            cnt, cp = 1, arr[i]
    return ans


for _ in range(int(input())):
    print(solve())


Comments

Submit
0 Comments
More Questions

1671C - Dolce Vita
1669G - Fall Down
4D - Mysterious Present
1316B - String Modification
1204A - BowWow and the Timetable
508B - Anton and currency you all know
1672A - Log Chopping
300A - Array
48D - Permutations
677C - Vanya and Label
1583B - Omkar and Heavenly Tree
1703C - Cypher
1511C - Yet Another Card Deck
1698A - XOR Mixup
1702E - Split Into Two Sets
1703B - ICPC Balloons
1702F - Equate Multisets
1700A - Optimal Path
665C - Simple Strings
1708A - Difference Operations
1703E - Mirror Grid
1042A - Benches
1676B - Equal Candies
1705B - Mark the Dust Sweeper
1711A - Perfect Permutation
1701B - Permutation
1692A - Marathon
1066A - Vova and Train
169B - Replacing Digits
171D - Broken checker