תת-מערך הארוך ביותר עם מספרים מתחלפים

נתון מערך חד ממדי לא ממוין a המלא במספרים שלמים ללא אפס!

יש להחזיר את אורכו של התת-מערך (הרציף) הארוך ביותר שכל איבריו הם לסירוגין מספר חיובי ומספר שלילי. וגם להדפיס את האינדקס ההתחלתי ואת האינדקס הסופי של התת-מערך המבוקש. אם יש במערך יותר מתת-מערך אחד באורך מקסימלי, יודפסו האינדקסים של התת-מערך הראשון מביניהם.

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

דוגמה 1:
קלט:
a = [-1, 1, -1, -5, 2, 2]
פלט:
Starting index = 0 Ending index = 2
3

הסבר: תת-המערך הארוך ביותר עם מספרים מתחלפים הוא [2, -5, -1] מאינדקס 0 עד 2.

דוגמה 2:
קלט:
a = [3, 3, 2, -7, 2, 1, 1, -2, -2]
פלט:
Starting index = 2 Ending index = 4
3

הסבר: תת-המערך הארוך ביותר עם מספרים מתחלפים הוא [1, 2, -7] מאינדקס 2 עד 4.

דוגמה 3:
קלט:
a = [1, 2, 3, 4, 5, 4]
פלט:
Starting index = 0 Ending index = 0
1

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

דוגמה 4:
קלט:
a = [1, -2, 3, -4, -5, 4, 2, -4, 6, -2]
פלט:
Starting index = 0 Ending index = 3
4

הסבר: ישנם שני תת-מערכים באורך 4, הראשון מאינדקס 0 עד 3.

דוגמה 5:
קלט:
a = [1, -1, 1, -1, 1, -1, 1]
פלט:
Starting index = 0 Ending index = 6
7

הסבר: כל המערך הוא תת-מערך מתחלף באורך 7.

דוגמה 6:
קלט:
a = [1, 2, -3, 4, -5, 6, -7, 8, -9]
פלט:
Starting index = 1 Ending index = 8
8

הסבר: כל המערך הוא תת-מערך מתחלף באורך 8.

דוגמה 7:
קלט:
a = [10, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
פלט:
Starting index = 0 Ending index = 10
11

הסבר: כל המערך הוא תת-מערך מתחלף באורך 11.

דוגמה 8:
קלט:
a = [1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12]
פלט:
Starting index = 0 Ending index = 11
12

הסבר: כל המערך הוא תת-מערך מתחלף באורך 12.

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

קלט:

a = [-1, 1, -1, -5, 2, 2]

הפלט המבוקש:

Starting index = 0 Ending index = 2
3