TopCoder problem "WhiteHats" used in SRM 361 (Division I Level One , Division II Level Two)



Problem Statement

    There is a number of people in a room, and each of them wears a hat which is either black or white. Every person counts the number of other people wearing white hats. You are given a int[] count, the i-th element of which is the number counted by the i-th person. Return the total number of people wearing white hats, or -1 if count doesn't correspond to a valid situation.
 

Definition

    
Class:WhiteHats
Method:whiteNumber
Parameters:int[]
Returns:int
Method signature:int whiteNumber(int[] count)
(be sure your method is public)
    
 

Constraints

-count will contain between 2 and 50 elements, inclusive.
-Each element of count will be between 0 and 50, inclusive.
 

Examples

0)
    
{2,1,1}
Returns: 2
The first person wears a black hat and sees two people wearing white hats. Each person wearing a white hat sees only one other white hat in the room.
1)
    
{2,2,2}
Returns: 3
Everyone wears a white hat here.
2)
    
{0,0}
Returns: 0
Black hats only.
3)
    
{1,1,1,2}
Returns: -1
4)
    
{10,10}
Returns: -1
Now that's interesting. There are only two people in the room, yet each of them counted 10 others.

Problem url:

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

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=10773&pm=8010

Writer:

slex

Testers:

PabloGilberto , Yarin , Olexiy , ivan_metelsky

Problem categories:

Brute Force, Simple Math, Simple Search, Iteration