Codeforce第576回合“ Div 1-B”

时间:2019-07-31 13:23:33

标签: python-3.x optimization time-limiting

有一个国家有n个公民。他们中的第i个最初是ai

钱。政府严格控制其公民的财富。每当公民购物或赚钱时,他们都必须向社会服务机构发送收据,注明他们目前拥有的金额。

有时候,政府会向穷人支付款项:所有收入严格低于x的公民 相应地付款,以便在付款之后,他们有正好x

钱。在这种情况下,市民不会发送收据。

您知道每个公民的初始财富以及所有事件的日志:收据和支出。恢复所有事件发生后每个公民的财产。 输入

第一行包含一个整数n (1≤n≤2⋅105)-公民人数。

下一行包含n 整数a1,a2,...,an(0≤ai≤109)—公民的初始余额。

下一行包含一个整数q (1≤q≤2⋅105)-事件数。

下一个q

行包含一个事件。这些事件按时间顺序给出。

每个事件都被描述为1 p x(1≤p≤n ,0≤x≤109)或2 x(0≤x≤109)。在第一种情况下,我们收到第p个人的余额等于x的收据。在第二种情况下,我们得到了带有参数x

的收益

。 输出

打印n 整数-所有事件发生后所有公民的余额。

我解决该问题的方法是将问题分为子问题,并通过具有不同功能的每种类型的查询来更新数组

def fun(l,a,n):
    for i in range(n):
        if a[i]<=l[1]:
            a[i]=l[1]
def fun2(l,a,n):
    a[l[1]-1]=l[2]

n=int(input())
a=list(map(int,input().split()))
#q=int(input())
for _ in range(int(input())):
    l=list(map(int,input().split()))
    if l[0]==2:
        fun(l,a,n)
    else:
        fun2(l,a,n)
print(*a)

预期输入: 4 1 2 3 4 3 2 3 1 2 2 2 1 预期产量: 3 2 3 4 预期输入2: 5 3 50 2 1 10 3 1 2 0 2 8 1 3 20 预期产量: 8 8 20 8 10 我的解决方案因在测试用例5之后抛出测试用例中超出的时间限制而失败 是否有任何优化或改进措施可以完全解决此问题??

0 个答案:

没有答案