מספר זוגות מכוניות מצטלבות

נתון מערך חד-ממדי המלא במספרים 1 ו- 0 בלבד.

המערך מייצג נסיעה של מכוניות בכביש באופן הבא:
0 מייצג מכונית שנוסעת למזרח (east) ו- 1 מייצג מכונית שנוסעת למערב (west).

נגדיר זוג מכוניות כמצטלבות (עוברות זו על פני זו) כאשר מכונית אחת נוסעת מזרחה והשניה מערבה.

בצורה מדויקת יותר – זוג מכוניות (P, Q) מצטלבות כאשר P ≤ Q, ו-P נוסעת מזרחה, ו-Q נוסעת מערבה.

בהינתן מערך a מלא בנתונים כנ"ל, יש להחזיר את מספר הזוגות של מכוניות שמצטלבות.

לדוגמא, אם המערך a הוא

01234
01011

יש לנו 5 זוגות של מכוניות שמצטלבות (0, 1), (0, 3), (0, 4), (2, 3), (2, 4) ולכן יוחזר 5.

השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.

אילוצים:

המערך מלא בנתונים שהם רק 0 ו- 1.

דוגמה 1:
קלט:
a = [0, 1, 0, 1, 1]
פלט:
5

הסבר: הזוגות המצטלבים הם: (0,1), (0,3), (0,4), (2,3), (2,4)

דוגמה 2:
קלט:
a = [0, 1]
פלט:
1

הסבר: יש זוג אחד בלבד של מכוניות מצטלבות: (0,1)

דוגמה 3:
קלט:
a = [1, 0]
פלט:
0

הסבר: אין זוגות מצטלבים כי המכונית ב-1 נוסעת מערבה ואחריה המכונית ב-0 נוסעת מזרחה

דוגמה 4:
קלט:
a = [0, 0, 0, 1, 1, 1]
פלט:
9

הסבר: כל 0 מצטלב עם כל 1, יש 3*3=9 זוגות

דוגמה 5:
קלט:
a = [1, 1, 1, 1]
פלט:
0

הסבר: אין זוגות מצטלבים כי כל המכוניות נוסעות מערבה

דוגמה 6:
קלט:
a = [0, 0, 0, 0]
פלט:
0

הסבר: אין זוגות מצטלבים כי כל המכוניות נוסעות מזרחה

דוגמה 7:
קלט:
a = [0, 1, 1, 0, 1]
פלט:
4

הסבר: הזוגות המצטלבים הם: (0,1), (0,2), (0,4), (3,4)

דוגמה 8:
קלט:
a = [0, 0, 1, 0, 0, 1, 1]
פלט:
10

הסבר: הזוגות המצטלבים הם: (0,2), (0,5), (0,6), (1,2), (1,5), (1,6), (3,5), (3,6), (4,5), (4,6) - סה"כ 10

Loading...
נשמרLn 1, Col 1

קלט:

a = [0, 1, 0, 1, 1]

הפלט המבוקש:

5