1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | (defun make-long-list (x) (do* ((y (make-list x)) (i y (cdr i))) (nil) (when (null i) (return y)) (rplaca i (random 1000)))) (defun make-long-array (x) (do* ((y (make-array x :element-type 'fixnum)) (i 0 (1+ i))) (nil) (when (= x i) (return y)) (setf (aref y i) (random 1000)))) (defun count-inversions (lst) (if (or (null lst) (null (cdr lst))) 0 (let* ((half (ceiling (/ (length lst) 2))) (left-list (subseq lst 0 half)) (right-list (subseq lst half))) (+ (loop for a in left-list summing (loop for b in right-list counting (not (< a b)))) (count-inversions left-list) (count-inversions right-list))))) (defun count-inversions-6 (x) (declare (optimize (speed 3) (compilation-speed 0) (debug 0) (safety 0)) (ftype (function ((simple-array fixnum (*))) (unsigned-byte 32)) count-inversions-6) (type (simple-array fixnum (*)) x)) (if (< (length x) 2) 0 (let* ((half-a (ash (length x) -1)) (left-array (subseq x 0 half-a)) (half-b (- (length x) half-a)) (right-array (subseq x half-a)) (current 0) (total 0)) (declare (type (unsigned-byte 32) half-a) (type (unsigned-byte 32) half-b) (type fixnum current) (type (simple-array fixnum (*)) right-array) (type (simple-array fixnum (*)) left-array) (type (unsigned-byte 32) total)) (the (unsigned-byte 32) (+ (dotimes (i half-a total) (setq current (aref left-array i)) (dotimes (j half-b) (when (>= current (the fixnum (aref right-array j))) (setq total (the (unsigned-byte 32) (+ total 1)))))) (count-inversions-6 left-array) (count-inversions-6 right-array)))))) (time (make-long-list 1000)) ;; Evaluation took: ;; 0.000 seconds of real time ;; 0.000000 seconds of total run time (0.000000 user, 0.000000 system) ;; 100.00% CPU ;; 881,214 processor cycles ;; 159,744 bytes consed (time (make-long-array 1000)) ;; Evaluation took: ;; 0.000 seconds of real time ;; 0.000000 seconds of total run time (0.000000 user, 0.000000 system) ;; 100.00% CPU ;; 806,562 processor cycles ;; 80,016 bytes consed (time (count-inversions (make-long-list 1000))) ;; Evaluation took: ;; 0.313 seconds of real time ;; 0.312019 seconds of total run time (0.308019 user, 0.004000 system) ;; [ Run times consist of 0.008 seconds GC time, and 0.305 seconds non-GC time. ] ;; 99.68% CPU ;; 875,653,434 processor cycles ;; 3,038,576 bytes consed (time (count-inversions-6 (make-long-array 1000))) ;; Evaluation took: ;; 0.178 seconds of real time ;; 0.180011 seconds of total run time (0.180011 user, 0.000000 system) ;; 101.12% CPU ;; 500,373,921 processor cycles ;; 1,586,080 bytes consed |
KGRlZnVuIG1ha2UtbG9uZy1saXN0ICh4KQogIChkbyogKCh5IChtYWtlLWxpc3QgeCkpCgkoaSB5IChjZHIgaSkpKQogICAgICAgKG5pbCkKICAgICh3aGVuIChudWxsIGkpIChyZXR1cm4geSkpCiAgICAocnBsYWNhIGkgKHJhbmRvbSAxMDAwKSkpKQoKKGRlZnVuIG1ha2UtbG9uZy1hcnJheSAoeCkKICAoZG8qICgoeSAobWFrZS1hcnJheSB4IDplbGVtZW50LXR5cGUgJ2ZpeG51bSkpCgkoaSAwICgxKyBpKSkpCiAgICAgICAobmlsKQogICAgKHdoZW4gKD0geCBpKSAocmV0dXJuIHkpKQogICAgKHNldGYgKGFyZWYgeSBpKSAocmFuZG9tIDEwMDApKSkpCgooZGVmdW4gY291bnQtaW52ZXJzaW9ucyAobHN0KQogIChpZiAob3IgKG51bGwgbHN0KSAobnVsbCAoY2RyIGxzdCkpKQogICAgICAwCiAgICAgIChsZXQqICgoaGFsZiAoY2VpbGluZyAoLyAobGVuZ3RoIGxzdCkgMikpKQoJICAgICAobGVmdC1saXN0IChzdWJzZXEgbHN0IDAgaGFsZikpCgkgICAgIChyaWdodC1saXN0IChzdWJzZXEgbHN0IGhhbGYpKSkKCSgrIChsb29wIGZvciBhIGluIGxlZnQtbGlzdAoJICAgICAgc3VtbWluZyAobG9vcCBmb3IgYiBpbiByaWdodC1saXN0CgkJCSBjb3VudGluZyAobm90ICg8IGEgYikpKSkKCSAgIChjb3VudC1pbnZlcnNpb25zIGxlZnQtbGlzdCkKCSAgIChjb3VudC1pbnZlcnNpb25zIHJpZ2h0LWxpc3QpKSkpKQoKKGRlZnVuIGNvdW50LWludmVyc2lvbnMtNiAoeCkKICAoZGVjbGFyZSAob3B0aW1pemUgKHNwZWVkIDMpCgkJICAgICAoY29tcGlsYXRpb24tc3BlZWQgMCkKCQkgICAgIChkZWJ1ZyAwKQoJCSAgICAgKHNhZmV0eSAwKSkKCSAgIChmdHlwZSAoZnVuY3Rpb24gKChzaW1wbGUtYXJyYXkgZml4bnVtICgqKSkpCgkJCSAgICAodW5zaWduZWQtYnl0ZSAzMikpCgkJICBjb3VudC1pbnZlcnNpb25zLTYpCgkgICAodHlwZSAoc2ltcGxlLWFycmF5IGZpeG51bSAoKikpIHgpKQogIChpZiAoPCAobGVuZ3RoIHgpIDIpCiAgICAgIDAKICAgICAgKGxldCogKChoYWxmLWEgKGFzaCAobGVuZ3RoIHgpIC0xKSkKCSAgICAgKGxlZnQtYXJyYXkgKHN1YnNlcSB4IDAgaGFsZi1hKSkKCSAgICAgKGhhbGYtYiAoLSAobGVuZ3RoIHgpIGhhbGYtYSkpCiAgICAgICAgICAgICAocmlnaHQtYXJyYXkgKHN1YnNlcSB4IGhhbGYtYSkpCgkgICAgIChjdXJyZW50IDApCgkgICAgICh0b3RhbCAwKSkKCShkZWNsYXJlICh0eXBlICh1bnNpZ25lZC1ieXRlIDMyKSBoYWxmLWEpCgkJICh0eXBlICh1bnNpZ25lZC1ieXRlIDMyKSBoYWxmLWIpCgkJICh0eXBlIGZpeG51bSBjdXJyZW50KQogICAgICAJCSAodHlwZSAoc2ltcGxlLWFycmF5IGZpeG51bSAoKikpIHJpZ2h0LWFycmF5KQoJCSAodHlwZSAoc2ltcGxlLWFycmF5IGZpeG51bSAoKikpIGxlZnQtYXJyYXkpCiAgICAgIAkJICh0eXBlICh1bnNpZ25lZC1ieXRlIDMyKSB0b3RhbCkpCgkodGhlICh1bnNpZ25lZC1ieXRlIDMyKQoJICAoKwoJICAgKGRvdGltZXMgKGkgaGFsZi1hIHRvdGFsKQoJICAgICAoc2V0cSBjdXJyZW50IChhcmVmIGxlZnQtYXJyYXkgaSkpCgkgICAgIChkb3RpbWVzIChqIGhhbGYtYikKCSAgICAgICAod2hlbiAoPj0gY3VycmVudAoJCQkgKHRoZSBmaXhudW0gKGFyZWYgcmlnaHQtYXJyYXkgaikpKQoJCSAoc2V0cSB0b3RhbCAodGhlICh1bnNpZ25lZC1ieXRlIDMyKSAoKyB0b3RhbCAxKSkpKSkpCgkgICAoY291bnQtaW52ZXJzaW9ucy02IGxlZnQtYXJyYXkpCgkgICAoY291bnQtaW52ZXJzaW9ucy02IHJpZ2h0LWFycmF5KSkpKSkpCgoodGltZSAobWFrZS1sb25nLWxpc3QgMTAwMCkpCgo7OyBFdmFsdWF0aW9uIHRvb2s6Cjs7ICAgMC4wMDAgc2Vjb25kcyBvZiByZWFsIHRpbWUKOzsgICAwLjAwMDAwMCBzZWNvbmRzIG9mIHRvdGFsIHJ1biB0aW1lICgwLjAwMDAwMCB1c2VyLCAwLjAwMDAwMCBzeXN0ZW0pCjs7ICAgMTAwLjAwJSBDUFUKOzsgICA4ODEsMjE0IHByb2Nlc3NvciBjeWNsZXMKOzsgICAxNTksNzQ0IGJ5dGVzIGNvbnNlZAoKKHRpbWUgKG1ha2UtbG9uZy1hcnJheSAxMDAwKSkKCjs7IEV2YWx1YXRpb24gdG9vazoKOzsgICAwLjAwMCBzZWNvbmRzIG9mIHJlYWwgdGltZQo7OyAgIDAuMDAwMDAwIHNlY29uZHMgb2YgdG90YWwgcnVuIHRpbWUgKDAuMDAwMDAwIHVzZXIsIDAuMDAwMDAwIHN5c3RlbSkKOzsgICAxMDAuMDAlIENQVQo7OyAgIDgwNiw1NjIgcHJvY2Vzc29yIGN5Y2xlcwo7OyAgIDgwLDAxNiBieXRlcyBjb25zZWQKCih0aW1lIChjb3VudC1pbnZlcnNpb25zIChtYWtlLWxvbmctbGlzdCAxMDAwKSkpCgo7OyBFdmFsdWF0aW9uIHRvb2s6Cjs7ICAgMC4zMTMgc2Vjb25kcyBvZiByZWFsIHRpbWUKOzsgICAwLjMxMjAxOSBzZWNvbmRzIG9mIHRvdGFsIHJ1biB0aW1lICgwLjMwODAxOSB1c2VyLCAwLjAwNDAwMCBzeXN0ZW0pCjs7ICAgWyBSdW4gdGltZXMgY29uc2lzdCBvZiAwLjAwOCBzZWNvbmRzIEdDIHRpbWUsIGFuZCAwLjMwNSBzZWNvbmRzIG5vbi1HQyB0aW1lLiBdCjs7ICAgOTkuNjglIENQVQo7OyAgIDg3NSw2NTMsNDM0IHByb2Nlc3NvciBjeWNsZXMKOzsgICAzLDAzOCw1NzYgYnl0ZXMgY29uc2VkCgoodGltZSAoY291bnQtaW52ZXJzaW9ucy02IChtYWtlLWxvbmctYXJyYXkgMTAwMCkpKQoKOzsgRXZhbHVhdGlvbiB0b29rOgo7OyAgIDAuMTc4IHNlY29uZHMgb2YgcmVhbCB0aW1lCjs7ICAgMC4xODAwMTEgc2Vjb25kcyBvZiB0b3RhbCBydW4gdGltZSAoMC4xODAwMTEgdXNlciwgMC4wMDAwMDAgc3lzdGVtKQo7OyAgIDEwMS4xMiUgQ1BVCjs7ICAgNTAwLDM3Myw5MjEgcHJvY2Vzc29yIGN5Y2xlcwo7OyAgIDEsNTg2LDA4MCBieXRlcyBjb25zZWQ=
-
upload with new input
-
result: Success time: 2.24s memory: 10576 kB returned value: 0
Real time: 0.001355 sec. Run time: 0.002 sec. Space: 8000 Bytes Real time: 0.001917 sec. Run time: 0.002 sec. Space: 4176 Bytes Real time: 0.854696 sec. Run time: 0.85387 sec. Space: 91392 Bytes Real time: 1.362522 sec. Run time: 1.358793 sec. Space: 6170416 Bytes GC: 12, GC time: 0.031996 sec.


