const fs = require('fs');

let input = fs.readFileSync(`${__dirname}/input.txt`, 'utf-8').split('\n').sort((a, b) => val(a).getTime() - val(b).getTime());

function val(a) {
	let time = new Date(a.match(/\[(.*)\]/)[1]);
	return time;
}

let guards = {};
let id;
let start;
let shifts = []
for (let line of input) {
	let match = line.match(/#(\d+)/);
	if (match) {
		id = match[1];
		if (!guards[id])
			guards[id] = {};
		shifts.push(id);
	} else {
		if (line.includes('falls')) {
			start = val(line).getMinutes();
		} else if (line.includes('wakes')) {
			let end = val(line).getMinutes();
			for (time = start; time < end; time++) {
				guards[id][time] = (guards[id][time] || 0) + 1;
			}
		}
	}
}

function sleps(guard) {
	try {
		return Object.values(guard[1]).reduce((a, b) => a + b) / shifts.filter(v => v == guard[0]).length;
	} catch (err) {
		return 0;
	}
}
id = Object.entries(guards).sort((a, b) => sleps(b) - sleps(a))[0][0];
let minute = Number(Object.entries(guards[id]).sort((a, b) => b[1] - a[1])[0][0]);

console.log(`#${id} * minute ${minute} = ${id * minute}`)