Может кто-нибудь сказать мне, что я могу сделать, чтобы следующий 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