Bonjour à vous. J'ai un problème:

Je dois créer un programme qui fait la somme de toutes les valeurs d'une liste entre deux bornes, cependant la liste pouvant être immenses et le nombre de fois où l'on peut me demander des sommes aussi, mon programme est trop long ...

Après plusieurs essais j'ai ce code qui est le plus cours pour l'instant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
input=sys.stdin.readline
n,r=input().split()
n=int(n)
r=int(r)
N=list(map(int,input().split()))
c=sum(N)
for i in range(r):
   a,b=input().split()
   a=int(a)
   b=int(b)
   if (b-a)<=n/2: #si l'intervalle est plus petit que la moitié de la liste
      print(sum(N[a-1:b]))
   else:
      d=c-sum(N[0:a-1])-sum(N[b:]) #sinon on retire les termes en "trop" 
      print(d)
Avez vous des idées afin d'améliorer la vitesse de mon programme? J'ai pensé a stocker toutes les valeurs que j'aurais calculé afin de pouvoir les réutiliser mais je ne sais pas comment faire.

Merci et bonne journée.