TopCoder problem "ASeries" used in TCCC '04 Qual. 2 (Division I Level One)



Problem Statement

    *** You may only submit a given problem once - no resubmissions will be accepted. ***



An arithmetic series consists of a sequence of terms such that each term minus its immediate predecessor gives the same result. For example, the sequence 3,7,11,15 is the terms of the arithmetic series 3+7+11+15; each term minus its predecessor equals 4. (Of course there is no requirement on the first term since it has no predecessor.)

Given a collection of integers, we want to find the longest arithmetic series that can be formed by choosing a sub-collection (possibly the entire collection). Create a class ASeries that contains a method longest that is given a int[] values and returns the length of the longest arithmetic series that can be formed from values.

 

Definition

    
Class:ASeries
Method:longest
Parameters:int[]
Returns:int
Method signature:int longest(int[] values)
(be sure your method is public)
    
 

Constraints

-values will contain between 2 and 50 elements inclusive.
-Each element of values will be between -1,000,000 and 1,000,000 inclusive.
 

Examples

0)
    
{3,8,4,5,6,2,2}
Returns: 5
No arithmetic series using these values is longer than 2,3,4,5,6.
1)
    
{-1,-5,1,3}
Returns: 3
-1, 1, 3 is an arithmetic series (so is 3,-1,-5).
2)
    
{-10,-20,-10,-10}
Returns: 3
-10,-10,-10 is an arithmetic series.

Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=1758

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=5001&pm=1758

Writer:

dgoodman

Testers:

lbackstrom , schveiguy

Problem categories:

Brute Force, Sorting