Mise à jour du langage En tant que membre d'équipage, j'ai pu essayer Cython dans le nouvel environnement de test des juges, alors je l'ai essayé. Au fait, quelle est la première fois que j'ai touché Cython? Je ne sais même pas (rires)
À propos, Python 3 après la mise à jour du langage est 3.8.0 et Cython est 0.29.14.
ABC085C - Je l'ai essayé avec Otoshidama. J'ai soumis le code source qui était AC à 678 ms avec Python 3 comme c'est le cas avec Cython et AC à 614 ms.
from sys import exit
N, Y = map(int, input().split())
for i in range(N + 1):
for j in range(N + 1 - i):
k = N - i - j
if 10000 * i + 5000 * j + 1000 * k == Y:
print('%d %d %d' % (i, j, k))
exit()
print('-1 -1 -1')
Ne pensiez-vous pas que Python 3 serait pénalisé avec RE même si les compilateurs étaient CE et aucune pénalité même avec une faute de frappe bâclée? Cython serait CE.
Si vous essayez de supprimer le = dans la première instruction d'affectation, vous obtiendrez une erreur comme celle-ci.
Error compiling Cython file:
------------------------------------------------------------
...
from sys import exit
N, Y map(int, input().split())
^
------------------------------------------------------------
Main.py:3:6: Syntax error in simple statement list
./Main.c:1:2: error: #error Do not use this file, it is the result of a failed Cython compilation.
1 | #error Do not use this file, it is the result of a failed Cython compilation.
| ^~~~~
En regardant la documentation Cython, il semble que j'ai besoin de deux codes sources, comme écrire un fichier .pyx, le compiler, et l'importer et l'utiliser dans .py, donc je ne savais pas comment l'utiliser au début. Cython a le mode Pure Python, qui semble être utilisé par AtCoder.
En conséquence, AC.6 fois plus rapide en 107ms !!
from cython import longlong
def main():
N: longlong
Y: longlong
N, Y = map(int, input().split())
i: longlong
j: longlong
for i in range(N + 1):
for j in range(N + 1 - i):
k: longlong = N - i - j
if 10000 * i + 5000 * j + 1000 * k == Y:
print('%d %d %d' % (i, j, k))
return
print('-1 -1 -1')
if __name__ == '__main__':
main()
Après la mise à jour du langage, PyPy 3 était de 7.3.0 et AC à 150 ms. Cependant, la consommation de mémoire a été considérablement augmentée à 64 Mo par rapport à 8,7 Mo pour Python 3 / Cython.