double vote(final Schedule schedule, final int[] counters) {
		double vote = 0.0;
		final int[] mine = new int[sections.size()];
		final int[] week = new int[Schedule.DAYS];
		Arrays.fill(week, 0);
		int i = 0;
		for(final Section section : sections) {
			mine[i] = schedule.getSchedule().get(section.getId());
			week[mine[i]/Schedule.SLOTS_PER_DAY]++;
			i++;
		}

		for(int a=0;a<mine.length-1;a++) {
			for(int b=i;b<mine.length;b++) {
				// detect conflict
				if(mine[a]==mine[b]) {
					counters[Schedule.SE_COUNTER]++;
					vote += WEIGHT_SIMULTANEOUS_EXAMS;
				}

				// consecutive exams
				if(Math.abs(mine[a]-mine[b]) == 1) {
					counters[Schedule.CE_COUNTER]++;
					vote += WEIGHT_CONSECUTIVE_EXAMS;
				}
			}
		}

		// detect more than two exam per day
		for(int d=0;d<week.length;d++) {
			if(week[d] > 2) {
				counters[Schedule.ME_COUNTER]++;
				vote += WEIGHT_MORE_THAN_TWO_EXAM_PER_DAY;
			}
			// detect friday exams
			if(d > 3) {
				counters[Schedule.FE_COUNTER] += week[d];
				vote += week[d] * WEIGHT_FRIDAY_EXAMS;
			}
		}
		return vote;
	}