Problem Statement
You are given a
A pair (i,j) is called valid if i <= j and both i and j are valid indices into A. The valid pair (i,j) determines the subarray A(i,j) = { A[i], A[i+1], ..., A[j] }. A valid pair (i,j) is called nice if there is an integer v > 1 that divides at least half of the elements of A(i,j).
For example, if we have A(i,j) = { 3, 3, 47, 6, 1, 10 } then the pair (i,j) is nice because three of the six numbers in A(i,j) are divisible by v=3.
If there are no valid pairs for the given A, return -1. Otherwise, return the largest k such that there is a valid pair (i,j) with j-i = k.
Definition
- Class:
- TheNicePair
- Method:
- solve
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int solve(int[] A)
- (be sure your method is public)
Constraints
- A will contain between 1 and 50 elements, inclusive.
- Each element of A will be between 1 and 1000, inclusive.
Examples
{5,5,5,5,5}
Returns: 4
All elements of A are divisible by 5. Hence, (0,4) is a valid pair and the correct return value is 4-0 = 4.
{1,1,1,1}
Returns: -1
There are no nice pair, so the answer is -1.
{2,3,5,7}
Returns: 1
The following pairs are nice: (0,1), (1,2), (2,3), (0,0), (1,1), (2,2), (3,3).
{8,8,5,5,5}
Returns: 4
There are multiple nice pairs here. Among them, the pair (i,j) = (0,4) has the maximal value of j-i.
{1,1000,1000,1,1000,1,999}
Returns: 5
{1000,1,1,1000}
Returns: 3
{1,1,1,1,1,1,1,487,1,1,1,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,487,1,1,487,487,487,1,487,487,1,1,1,487,1,487,1,1,487,1,1,1,487}
Returns: 17
{1,1,1,1,1,1,1,1,1,673,1,673,1,673,1,1,1,673,1,1,1,1,673,1,1,1,1,673,1,1,1,1,1,673,673,673,1,1,1,673,1,673,1,673,1}
Returns: 11
{1,1,953,1,1,1,1,1,1,1,1,1,1,1,1,953,1,953,953,1,1,1,1,1,1,1,953,953,953,1,1,1,1,1,953,953,1,1,1,953,953,953,1}
Returns: 15
{1,395,1,1,1,395,1,1,1,395,1,1,1,1,1,1,1,1,1,1,1,395,395,395,1,395,1,1,1,395,1,1,1,1,1,1,1,1,1,1}
Returns: 9
{1,1,1,1,1,1,967,1,1,1,1,1,1,967,1,1,1,1,1,1,1,1,1,967,1,1,1,1,1,1,1,1,1,967,967,1,967,967,1,1,967,1,1,967,1,967,1}
Returns: 13
{1,1,1,1,1,1,1,39,1,1,39,39,1,1,1,1,39,1,1,39,39,39,1,1,1,1,1,39,39,1,1,39,1,39,1,39,1,39,1,39,39,1,1,1,39,1,1,1}
Returns: 21
{1,1,1,1,1,272,272,1,272,1,272,272,1,1,272,1,272,1,272,272,1,272,1,1,272,1,1,272,272,1,272,272,1,272,272,272,1,1,272,1,1,1,272,272,1,1,272,1,1,1}
Returns: 43
{1,349,1,1,349,1,1,349,349,349,1,1,1,1,1,349,349,1,349,1,349,1,1,1,1,1,1,349,1,1,1,1,349,1,349,1,1,1,1,349,1,1,1,349,349,1,349,349}
Returns: 13
{1,505,1,1,505,1,1,505,1,505,505,1,1,1,1,1,1,505,1,1,1,505,1,1,1,505,1,505,505,505,1,1,1,1,1,1,505,505,505,505,1,1,1,1,505,1}
Returns: 15
{1,437,1,1,437,437,437,437,437,437,437,1,1,1,437,1,437,437,1,1,1,1,1,1,1,437,1,437,1,437,437,1,437,1,437,437,437,1,437,1}
Returns: 39
{335,501,170,725,479,359,963,465,706,146,282,828,962,492,996,943,828,437,392,605,903,154,293,383,422,717,719,896,448,727,772,539,870,913,668,300,36,895,704,812,323,334,674,665,142,712,254,869}
Returns: 47
{663,758,38,860,724,742,530,779,317,36,191,843,289,107,41,943,265,649,447,806,891,730,371,351,7,102,394,549,630,624,85,955,757,841,967,377,932,309,945,440,627,324,538,539,119}
Returns: 13
{542,834,116,640,659,705,931,978,307,674,387,22,746,925,73,271,830,778,574,98,513,987,291,162,637,356,768,656,575,32,53,351,151,942,725,967,431,108,192,8,338,458,288}
Returns: 42
{946,910,210,759,222,589,423,947,507,31,414,169,901,592,763,656,411,360,625,538,549,484,596,42,603,351,292,837,375,21,597,22,349,200,669,485,282,735,54,1000}
Returns: 39
{901,789,128,468,729,894,649,484,808,422,311,618,814,515,310,617,936,452,601,250,520,557,799,304,225,9,845,610,990,703,196,486,94,344,524,588,315,504,449,201,459,619,581,797,799,282,590}
Returns: 46
{158,473,623,539,293,39,180,191,658,959,192,816,889,157,512,203,635,273,56,329,647,363,887,876,434,870,143,845,417,882,999,323,652,22,700,558,477,893,390,76,713,601,511,4,870,862,689,402}
Returns: 29
{424,3,586,183,286,89,427,618,758,833,933,170,155,722,190,977,330,369,693,426,556,435,550,442,513,146,61,719,754,140,424,280,997,688,530,550,438,867,950,194,196,298,417,287,106,489,283,456,735,115}
Returns: 49
{672,787,264,314,356,186,54,913,809,833,946,314,757,322,559,647,983,482,145,197,223,130,162,536,451,174,467,45,660,293,440,254,25,155,511,746,650,187,314,475,23,169,19,788,906,959,392,203}
Returns: 39
{415,315,825,335,875,373,160,834,71,488,298,519,178,774,271,764,669,193,986,103,481,214,628,803,100,528,626,544,925,24,973,62,182,4,433,506,594,726,32,493,143,223,287,65,901,188}
Returns: 45
{975,271,171,236,834,712,761,897,668,286,551,141,695,696,625,20,126,577,695,659,303,372,467,679,594,852,485,19,465,120,153,801,88,61,927,11,758,171,316,577}
Returns: 23
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,487}
Returns: 1
{1,1,1,1,1,1,1,1,1,673,1,1,1,673,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,673,1,1,1,1,1,1,1,1,1}
Returns: 1
{1,1,953,1,1,1,1,1,1,1,1,1,1,1,1,953,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,953,1,1,1,1,1,1,953,1}
Returns: 1
{1,1,1,1,1,395,1,1,1,395,1,1,1,1,1,1,1,1,1,1,1,1,1,395,1,395,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Returns: 3
{1,1,1,1,1,1,967,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,967,1,1,1,1,1,1,1,1,1,967,1,1,1,967,1,1,1,1,1,967,1,1,1}
Returns: 1
{1,1,1,1,1,1,1,39,1,1,1,1,1,1,1,1,39,1,1,1,1,39,1,1,1,1,1,39,39,1,1,1,1,1,1,1,1,1,1,1,39,1,1,1,39,1,1,1}
Returns: 3
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,272,1,1,272,1,1,1,1,1,272,1,1,272,1,1,1,272,1,1,1,1,1,1,1,1,272,1,1,1,1,1,1}
Returns: 3
{1,1,1,1,1,1,1,349,349,1,1,1,1,1,1,1,349,1,349,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,349,349,1,1,349}
Returns: 5
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,505,1,1,1,1,1,1,1,1,505,505,505,1,1,1,1,1,1}
Returns: 5
{1,1,1,1,1,1,437,437,1,1,1,1,1,1,437,1,437,1,1,1,1,1,1,1,1,1,1,437,1,437,1,1,437,1,437,1,437,1,1,1}
Returns: 9
{1,487,1,487,487,487,1,487,487,487,487,487,487,1,487,487,1,1,1,487,487,487,1,487,487,487,487,1,1,487,487,487,487,487,487,487,487,1,487,1,487,487,1,487,1,487,1,487}
Returns: 47
{673,673,673,673,673,673,673,1,1,673,1,673,1,673,673,673,1,673,1,673,673,673,673,1,673,1,673,673,673,1,673,673,1,673,673,673,1,673,1,673,1,673,1,673,673}
Returns: 44
{1,1,953,1,953,1,953,953,1,953,953,1,953,953,1,953,1,953,953,953,953,953,953,1,953,953,953,953,953,1,953,1,953,1,953,953,1,1,1,953,953,953,953}
Returns: 42
{1,395,1,395,1,395,395,1,395,395,395,1,1,395,1,395,395,1,395,395,395,395,395,395,395,395,1,395,1,395,395,1,1,395,1,395,1,1,395,1}
Returns: 39
{967,967,967,967,1,967,967,967,967,1,967,967,1,967,967,967,967,1,1,1,967,967,1,967,967,1,1,1,967,1,967,1,967,967,967,1,967,967,1,967,967,967,1,967,967,967,1}
Returns: 46
{1,39,1,39,1,1,39,39,39,1,39,39,39,39,1,39,39,39,39,39,39,39,39,1,39,1,39,39,39,39,1,39,39,39,39,39,1,39,39,39,39,1,1,1,39,1,39,39}
Returns: 47
{272,272,1,272,1,272,272,272,272,272,272,272,272,272,272,1,272,272,272,272,272,272,1,272,272,272,1,272,272,1,272,272,272,272,272,272,272,272,272,1,272,272,272,272,272,272,272,272,1,272}
Returns: 49
{349,349,349,1,349,1,349,349,349,349,349,1,1,349,349,349,349,1,349,349,349,349,349,1,349,349,349,349,349,349,1,1,349,1,349,1,349,349,349,349,349,349,1,349,349,1,349,349}
Returns: 47
{1,505,505,505,505,505,505,505,1,505,505,505,1,1,505,505,505,505,505,1,1,505,505,505,505,505,1,505,505,505,1,505,505,1,505,505,505,505,505,505,505,505,1,505,505,1}
Returns: 45
{437,437,1,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,1,437,437,1,437,437,437,437,437,437,1,437,437,1,437,437,437,437,437,437,437,1}
Returns: 39
{335,501,170,725,479,359}
Returns: 5
{706,146,282,828,962,492,996,943}
Returns: 7
{392,605,903,154}
Returns: 3
{422,717,719,896,448}
Returns: 4
{539}
Returns: 0
{668,300,36,895,704,812,323}
Returns: 6
{665,142,712,254}
Returns: 3
{645,663}
Returns: 1
{860,724,742,530,779,317,36}
Returns: 6
{289,107,41,943,265,649}
Returns: 3
{891,730,371,351,7,102}
Returns: 5
{630,624,85,955}
Returns: 3
{967}
Returns: 0
{309,945,440,627,324,538}
Returns: 5
{83,930}
Returns: 1
{116,640,659,705,931,978,307,674,387}
Returns: 7
{925,73,271,830,778,574,98,513,987}
Returns: 7
{637,356,768,656,575,32,53}
Returns: 6
{942,725,967,431,108,192,8,338,458}
Returns: 8
{384,946,910}
Returns: 2
{999,999,1000,999,999,999,999,999,1000,1000,1000,1000,1000,1000,1000,999,1000,999,1000,999,999,1000,999,999,1000,999,999,1000,1000,999,1000,999,1000,999,1000,1000,1000,999,1000,1000,999,1000,1000,999,1000,1000,1000,999,1000,999}
Returns: 49
{1000,1000,1000,1000,1000,999,999,1000,999,999,999,999,999,999,999,999,999,1000,999,1000,999,999,999,1000,1000,999,1000,1000,999,999,999,999,999,999,1000,999,999,1000,999,1000,1000,999,999,999,1000,1000,1000,1000,1000}
Returns: 48
{999,1000,999,1000,999,1000,1000,999,999,999,1000,1000,1000,1000,999,999,999,1000,999,1000,1000,1000,999,1000,999,999,999,1000,999,999,999,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,999,1000,999,999,999,999,999}
Returns: 48
{999,1000,999,1000,999,1000,999,1000,999,1000,1000,1000,999,999,1000,999,999,999,999,1000,999,1000,999,999,1000,999,1000,1000,999,999,999,999,1000,1000,999,1000,999,1000,1000,1000,999,1000,1000,999,1000,999,1000,1000,999,1000}
Returns: 49
{999,1000,999,999,999,1000,1000,999,1000,1000,1000,1000,1000,1000,999,1000,999,999,999,999,999,999,999,1000,1000,999,1000,1000,999,999,999,999,999,1000,999,1000,999,1000,1000,999,999,1000,999,999,999,1000,999,999,999,999}
Returns: 49
{1000,999,999,999,1000,999,999,1000,1000,1000,1000,999,999,1000,1000,999,999,999,1000,1000,1000,999,1000,1000,1000,1000,999,1000,999,1000,999,999,1000,1000,999,999,1000,999,1000,1000,999,1000,999,999,1000,1000,999,1000,1000,999}
Returns: 49
{999,1000,1000,1000,1000,999,1000,1000,1000,1000,999,1000,1000,1000,1000,999,999,1000,999,999,1000,999,999,1000,999,1000,999,1000,1000,1000,1000,1000,999,999,999,1000,1000,999,1000,999,999,999,1000,999,999,999,1000,1000,1000,999}
Returns: 49
{999,1000,999,1000,1000,999,999,999,1000,1000,999,1000,999,999,999,999,1000,1000,999,1000,999,1000,1000,999,999,999,999,999,999,1000,1000,999,1000,1000,999,1000,1000,999,1000,999,999,1000,999,999,1000,1000,999,1000,1000,1000}
Returns: 49
{1000,999,1000,1000,1000,999,1000,1000,1000,1000,999,999,999,999,999,999,1000,999,1000,999,999,999,1000,1000,1000,999,999,1000,1000,999,999,999,1000,999,1000,1000,999,999,999,999,1000,999,999,1000,1000,999,999,999,1000,999}
Returns: 49
{999,999,999,1000,999,1000,999,1000,1000,999,999,1000,999,999,1000,1000,1000,999,1000,1000,1000,999,1000,999,999,999,1000,999,1000,1000,1000,1000,999,999,999,999,999,999,1000,1000,1000,1000,1000,999,999,999,999,1000,999}
Returns: 48
{1000,999,1000,999,999,1000,1000,1000,999,999,1000,1000,999,1000,999,1000,999,1000,1000,1000,999,999,999,1000,999,1000,999,1000,999,1000,999,999,999,1000,1000,999,999,999,1000,999,1000,1000,1000,1000,1000,999,999,1000,999,1000}
Returns: 49
{1000,1000,1000,1000,1000,1000,999,999,1000,1000,999,999,999,999,999,1000,1000,999,1000,1000,1000,1000,1000,1000,999,1000,999,1000,999,999,1000,1000,1000,1000,1000,1000,999,999,999,1000,1000,999,999,1000,1000,1000,999,1000,999}
Returns: 48
{999,1000,999,999,1000,999,1000,1000,1000,1000,999,999,1000,1000,999,999,999,1000,999,1000,999,1000,1000,999,999,999,1000,999,999,1000,1000,1000,999,999,1000,999,1000,1000,999,1000,1000,999,1000,999,999,999,1000,1000,999}
Returns: 48
{1000,1000,1000,1000,999,999,1000,1000,999,1000,1000,1000,1000,1000,999,1000,999,1000,1000,1000,1000,1000,999,999,1000,999,1000,999,999,1000,999,1000,999,999,999,1000,1000,999,1000,1000,1000,999,1000,999,1000,1000,999,999,999,1000}
Returns: 49
{999,999,999,999,1000,1000,1000,1000,999,999,1000,999,999,1000,999,1000,1000,1000,999,999,999,1000,999,1000,1000,1000,999,1000,999,1000,999,999,999,1000,1000,999,999,999,1000,999,1000,1000,1000,1000,1000,999,1000,1000,1000,999}
Returns: 49
{999,1000,1000,1000,1000,1000,1000,999,999,999,999,1000,999,999,999,999,999,1000,1000,999,999,999,1000,999,1000,1000,999,1000,999,1000,1000,999,999,1000,1000,1000,999,999,1000,999,999,1000,1000,1000,1000,1000,999,999,1000,999}
Returns: 49
{1000,999,999,999,999,999,999,1000,1000,999,1000,999,999,1000,1000,1000,999,999,1000,999,999,999,999,999,999,999,1000,1000,1000,999,1000,1000,1000,1000,999,999,999,999,999,1000,1000,999,999,999,999,1000,999,1000,999}
Returns: 48
{999,999,1000,1000,1000,999,999,999,999,999,999,1000,1000,999,1000,999,1000,1000,999,1000,1000,999,999,1000,999,999,999,1000,1000,1000,999,1000,999,1000,1000,1000,1000,1000,999,999,1000,1000,999,1000,999,999,1000,999,1000,999}
Returns: 49
{1000,1000,1000,1000,1000,1000,999,999,1000,999,1000,1000,1000,1000,999,1000,999,999,999,999,1000,999,999,999,999,1000,1000,1000,1000,1000,999,999,1000,999,1000,999,999,1000,1000,999,1000,999,1000,1000,999,999,999,999,1000}
Returns: 48
{1000,1000,1000,1000,1000,999,1000,999,1000,999,999,1000,1000,999,999,999,1000,1000,999,1000,999,1000,1000,999,999,999,999,999,1000,1000,999,999,999,1000,999,1000,999,1000,1000,999,1000,999,1000,1000,999,1000,1000,999,999,999}
Returns: 49
{1,1,1,1,1,1,1,1,997,1,1,1,1,1,1,1,997,1,1,1,1,1,1,1,1,1,1,997,1,1,997,997,997,1,997,997,1,1,1,997,1,997,1,1,997,1,1,1,997,1}
Returns: 17
{1,1,1,1,1,1,1,1,1,997,1,997,1,997,1,1,1,997,1,1,1,1,997,1,1,1,1,997,1,1,1,1,1,997,997,997,1,1,1,997,1,997,1,997,1,1,997,1,1}
Returns: 13
{1,1,1,1,1,1,1,1,1,1,1,1,997,1,997,997,1,1,1,1,1,1,1,997,997,997,1,1,1,1,1,997,997,1,1,1,997,997,997,1,1,1,1,997,1,1,1,997,1,1}
Returns: 15
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Returns: -1
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Returns: -1
{1}
Returns: -1
{2 }
Returns: 0
{5 }
Returns: 0
{22, 33, 55, 77 }
Returns: 3
{5, 5, 5, 5, 5 }
Returns: 4
{6, 8, 10 }
Returns: 2
{719, 719, 719, 719, 719 }
Returns: 4
{6, 8, 10, 12, 14, 16 }
Returns: 5
{1 }
Returns: -1
{1, 1, 953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 953, 1, 953, 953, 1, 1, 1, 1, 1, 1, 1, 953, 953, 953, 1, 1, 1, 1, 1, 953, 953, 1, 1, 1, 953, 953, 953, 1 }
Returns: 15
{3 }
Returns: 0
{4, 6, 14 }
Returns: 2
{50 }
Returns: 0
{1000 }
Returns: 0
{1, 4, 1, 6 }
Returns: 3
{4 }
Returns: 0
{10, 12, 14, 16, 18 }
Returns: 4
{1, 8, 10, 12, 14, 16 }
Returns: 5
{72 }
Returns: 0
{25 }
Returns: 0
{200, 202, 204, 206, 208, 210 }
Returns: 5
{4, 6, 10, 14 }
Returns: 3
{10 }
Returns: 0
{2, 3, 3, 3, 3, 3 }
Returns: 5
{6 }
Returns: 0
{53, 106, 159, 265, 371, 583 }
Returns: 5
{987, 906, 976, 995, 925, 992, 917, 948, 996, 920, 956, 955, 922, 993, 952, 940, 929, 982, 998, 925, 901, 901, 983, 997, 958, 992, 964, 909, 925, 925, 991, 912, 983, 967, 959, 908, 911, 928, 909, 908, 901, 965, 915, 923, 958, 967, 916, 940, 949, 966 }
Returns: 31
{1000, 998, 996, 994, 992, 990 }
Returns: 5
{2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2 }
Returns: 12
{439, 439, 878, 1, 1, 1 }
Returns: 5
{14, 21, 28, 35, 49 }
Returns: 4
{3, 6, 2 }
Returns: 2
{7 }
Returns: 0
{1, 1, 3, 3, 3, 1, 1, 1, 3 }
Returns: 7
{7, 30, 11, 2, 7, 3, 7, 5, 7 }
Returns: 5
{12, 20, 28 }
Returns: 2
{16, 18, 20, 22 }
Returns: 3
{4, 6, 10 }
Returns: 2
{1, 1, 1, 1, 1 }
Returns: -1
{6, 9, 15, 21 }
Returns: 3
{4, 7, 6, 4, 7, 6 }
Returns: 5
{53, 59, 61, 67 }
Returns: 1
{3, 3, 1, 1 }
Returns: 3
{2, 1, 1, 1, 2 }
Returns: 1
{97, 37, 97, 194, 37 }
Returns: 4
{6, 9, 7, 13 }
Returns: 3
{210, 2, 3, 5, 7 }
Returns: 3
{13 }
Returns: 0
{12, 18, 30, 42 }
Returns: 3
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
Returns: -1
{1, 2, 3 }
Returns: 1
{24, 18, 1, 1 }
Returns: 3
{2, 3, 5, 7 }
Returns: 1