void rewardPlayersFor(String rewardType, int [] rewards, ScoreMaker scorer)
	{
		final int [] scores = new int[C.playerCount];
		for (int i = 0; i < scores.length; i++) {
			scores[i] = scorer.get(i);
		}

		Integer [] order = new Integer[C.playerCount];
		for (int i = 0; i < order.length; i++) {
			order[i] = i;
		}
		Arrays.sort(order, new Comparator<Integer>() {
			public int compare(Integer A, Integer B) {
				int a = A.intValue(), b = B.intValue();
				int a_t = scores[a];
				int b_t = scores[b];
				return -(a_t>b_t ? 1 : a_t<b_t ? -1 : 0);
			}
			});

		for (int i = 0; i < order.length; ) {
			int sum = 0;
			int j = i;
			while (j < order.length && scores[order[j]] == scores[order[i]]) {
				sum += (j < rewards.length ? rewards[j] : 0);
				j++;
			}

			assert j > i;

			for (int k = i; k < j; k++) {
				message(String.format("%s: %d points for %s\n",
					rewardType,
					sum / (j-i),
					C.playerNames[order[k]]
					));
				seats[order[k]].florins += sum / (j-i);
			}
			i = j;
		}
	}