Есть ли способ повысить производительность кода python? - PullRequest
0 голосов
/ 23 апреля 2020

Может кто-нибудь сказать мне, что я могу сделать, чтобы следующий python код быстрее? Он хорошо работает для небольших входов, но занимает слишком много времени от большого ввода. Заранее спасибо ?

Для каждого числа i в [1: m] вы знаете, что его счастье (b [i]). Подмассив называется счастливым, если для каждого числа i в этом подмассиве вхождение i равно b [i].

Запрос состоит из двух чисел (x, y). Ваша задача - определить, является ли подмассив счастливым (1) или нет (0).

from sys import stdin,stdout
import numpy
m,n=map(int, next(stdin).split())
a=numpy.array(next(stdin).split(),int)
b=numpy.array(next(stdin).split(),int)

q=int(next(stdin))
_out=[]
for z in stdin:
    x,y=map(int,z.split())
    flag=0
    ar=a[x-1:y]
    A=set(ar)
    temp=numpy.zeros(n)
    for i in ar:
        temp[i-1]=temp[i-1]+1
    for i in A:
        if temp[i-1]!=b[i-1]:
            _out.append('0')
            flag=1
            break
    if flag==0:
        _out.append('1')
stdout.write("\n".join(_out))

ВХОД ОБРАЗЦА:

8 4

2 2 1 4 4 2 4 4

1 2 3 4

6

1 2

1 5

1 3

2 8

3 3

5 8

ОЖИДАЕМЫЙ ВЫХОД:

1

0

1

1

1

0

...