| Task: | Laskettelukeskus | 
| Sender: | raikasdev | 
| Submission time: | 2023-11-07 17:52:01 +0200 | 
| Language: | Node.js | 
| Status: | READY | 
| Result: | 0 | 
| group | verdict | score | 
|---|---|---|
| #1 | WRONG ANSWER | 0 | 
| #2 | WRONG ANSWER | 0 | 
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.11 s | 1, 2 | details | 
| #2 | WRONG ANSWER | 0.12 s | 1, 2 | details | 
| #3 | WRONG ANSWER | 0.12 s | 1, 2 | details | 
| #4 | TIME LIMIT EXCEEDED | -- | 2 | details | 
| #5 | TIME LIMIT EXCEEDED | -- | 2 | details | 
| #6 | ACCEPTED | 0.12 s | 1, 2 | details | 
| #7 | TIME LIMIT EXCEEDED | -- | 2 | details | 
| #8 | ACCEPTED | 0.12 s | 1, 2 | details | 
| #9 | TIME LIMIT EXCEEDED | -- | 2 | details | 
| #10 | WRONG ANSWER | 0.12 s | 1, 2 | details | 
| #11 | TIME LIMIT EXCEEDED | -- | 2 | details | 
| #12 | ACCEPTED | 0.12 s | 1, 2 | details | 
| #13 | TIME LIMIT EXCEEDED | -- | 2 | details | 
Code
var readline = require("readline");
// Super Epic Input Tool For Testing :))))
// Fun fact to the moderators: I'm a professional Node.js developer (I have done it as a job and a freelancer, since I was 13!).
// Kinda sad you use such old Node.js version as 12, but suit yourself.
if (process.env.TEST !== "1") {
  let lines = [];
  const r = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false,
  });
  r.on("line", (line) => {
    lines.push(line);
    if (lines[0] && lines.length === parseInt(lines[0]) + 1) {
      run(...lines);
      r.close();
    }
  });
} else {
  // This part of the program is used for input management while testing the code :)
  // CSES doesn't run this, so it can be pretty much ignored. :)
  const lines = require("fs")
    .readFileSync(`${__filename.replace(".js", ".txt")}`)
    .toString()
    .split("\n");
  run(...lines);
}
// SOLUTION STARTS
function run(...lines) {
  let slopes = []; // Offset by one
  const slopeCount = parseInt(lines.shift());
  for (let i = 0; i < slopeCount; i++) {
    slopes[i] = {
      id: i,
      needed: 0,
      passed: 0,
      route: [],
    };
  }
  // Listen for input
  for (let i = 0; i < slopeCount - 1; i++) {
    const [from, to] = lines
      .shift()
      .split(" ")
      .map((v) => parseInt(v));
    slopes[to - 1] = {
      ...slopes[to - 1],
      route: [...(slopes[from - 1].route || []), from - 1],
    };
  }
  lines
    .shift()
    .split(" ")
    .forEach((v, index) => (slopes[index].needed = parseInt(v)));
  slopes = slopes.sort((a, b) => b.route.length - a.route.length);
  const pass = (id, times = 1) => {
    const ind = slopes.findIndex((v) => v.id === id);
    slopes[ind] = {
      ...slopes[ind],
      passed: slopes[ind].passed + times,
    };
  };
  let amount = 0;
  slopes.forEach((slope, index) => {
    if (slope.needed > 0 && slope.passed < slope.needed) {
      [slope.id, ...slope.route].forEach((id) => pass(id, slope.needed));
      amount += slope.needed;
    }
  });
  console.log(amount);
}
Test details
Test 1
Group: 1, 2
Verdict: ACCEPTED
| input | 
|---|
| 5 1 2 1 3 3 4 3 5 ...  | 
| correct output | 
|---|
| 6 | 
| user output | 
|---|
| 6 | 
Test 2
Group: 1, 2
Verdict: WRONG ANSWER
| input | 
|---|
| 100 1 73 1 64 64 23 1 88 ...  | 
| correct output | 
|---|
| 2675 | 
| user output | 
|---|
| 2998 | 
Test 3
Group: 1, 2
Verdict: WRONG ANSWER
| input | 
|---|
| 100 1 36 36 56 56 59 36 97 ...  | 
| correct output | 
|---|
| 2808 | 
| user output | 
|---|
| 3152 | 
Test 4
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100000 1 45452 1 74209 45452 78960 45452 79820 ...  | 
| correct output | 
|---|
| 28399367694319 | 
| user output | 
|---|
| (empty) | 
Test 5
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100000 1 31165 1 23263 31165 89516 31165 53122 ...  | 
| correct output | 
|---|
| 28546840313799 | 
| user output | 
|---|
| (empty) | 
Test 6
Group: 1, 2
Verdict: ACCEPTED
| input | 
|---|
| 100 1 79 79 9 79 45 45 10 ...  | 
| correct output | 
|---|
| 0 | 
| user output | 
|---|
| 0 | 
Test 7
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100000 1 66038 1 56789 56789 7403 66038 69542 ...  | 
| correct output | 
|---|
| 0 | 
| user output | 
|---|
| (empty) | 
Test 8
Group: 1, 2
Verdict: ACCEPTED
| input | 
|---|
| 100 1 2 2 3 3 4 4 5 ...  | 
| correct output | 
|---|
| 100 | 
| user output | 
|---|
| 100 | 
Test 9
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100000 1 2 2 3 3 4 4 5 ...  | 
| correct output | 
|---|
| 1000000000 | 
| user output | 
|---|
| (empty) | 
Test 10
Group: 1, 2
Verdict: WRONG ANSWER
| input | 
|---|
| 100 1 2 1 3 2 4 2 5 ...  | 
| correct output | 
|---|
| 2809 | 
| user output | 
|---|
| 2906 | 
Test 11
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100000 1 2 1 3 2 4 2 5 ...  | 
| correct output | 
|---|
| 26053917212428 | 
| user output | 
|---|
| (empty) | 
Test 12
Group: 1, 2
Verdict: ACCEPTED
| input | 
|---|
| 100 1 2 1 3 2 4 2 5 ...  | 
| correct output | 
|---|
| 5000 | 
| user output | 
|---|
| 5000 | 
Test 13
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100000 1 2 1 3 2 4 2 5 ...  | 
| correct output | 
|---|
| 50000000000000 | 
| user output | 
|---|
| (empty) | 
