-
Notifications
You must be signed in to change notification settings - Fork 0
/
1c-file-formatting.js
66 lines (48 loc) · 3.59 KB
/
1c-file-formatting.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
C. Форматирование файла
Ограничение времени 1 секунда (фактическое использование на тестах – до 100ms)
Ограничение памяти 256Mb (фактическое использование на тестах – до 16.35Mb)
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Петя - начинающий программист. Сегодня он написал код из n строк. К сожалению оказалось, что этот код трудно читать. Петя решил исправить это, добавив в различные места пробелы. А точнее, для i-й строки ему нужно добавить ровно a[i] пробелов.
Для добавления пробелов Петя выделяет строку и нажимает на одну из трёх клавиш: Space, Tab, и Backspace. При нажатии на Space в строку добавляется один пробел. При нажатии на Tab в строку добавляются четыре пробела. При нажатии на Backspace в строке удаляется один пробел.
Ему хочется узнать, какое наименьшее количество клавиш придётся нажать, чтобы добавить необходимое количество пробелов в каждую строку. Помогите ему!
Формат ввода
Первая строка входных данных содержит одно целое положительное число n (1 ≤ n ≤ 10^5) – количество строк в файле.
Каждая из следующих n строк содержит одно целое неотрицательное число a[i] (0 ≤ a[i] ≤ 10^9) – количество пробелов, которые нужно добавить в i-ю строку файла.
Формат вывода
Выведите одно число – минимальное количество нажатий, чтобы добавить в каждой строке необходимое количество пробелов.
Пример
Ввод
5
1
4
12
9
0
Вывод
8
Примечания
В примере можно:
• 1 раз нажать на Space в первой строке.
• 1 раз нажать на Tab на второй строке.
• 3 раза нажать на Tab в третьей строке.
• 2 раза нажать на Tab и один раз нажать на Space в четвёртой строке.
• Ничего не нажимать в пятой строке.
В итоге получается 1 + 1 + 3 + 3 = 8 нажатий. Можно доказать, что нельзя добавить необходимое количество пробелов за 7 нажатий или меньше.
*/
const fs = require('fs');
const lines = fs.readFileSync('input.txt', 'utf8').toString().trim().split('\n');
let keyPressCount = 0;
const length = parseInt(lines[0]);
for (let i = 1; i <= length; ++i) {
const symbolsCount = parseInt(lines[i]);
keyPressCount += Math.floor(symbolsCount / 4);
const remainderSymbolsCount = symbolsCount % 4;
if (remainderSymbolsCount === 3 || remainderSymbolsCount === 2) {
keyPressCount += 2;
} else if (remainderSymbolsCount === 1) {
keyPressCount += 1;
}
}
fs.writeFileSync('output.txt', `${keyPressCount}`);