4IS75DMQG7RN3P2EVOD5U6ON4DYSNVGFGM3SB7I4QOCDN3ZDQUVAC use std::collections::HashMap;use std::io::{self, Read};type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;fn main() -> Result<()> {let mut input = String::new();io::stdin().read_to_string(&mut input)?;part1(&input)?;part2(&input)?;Ok(())}fn part1(input: &str) -> Result<()> {let mut hashmap: HashMap<i32, bool> = HashMap::new();for line in input.lines() {let num = line.parse::<i32>()?;if hashmap.contains_key(&(2020 - num)) {println!("{}", num * (2020 - num));return Ok(());} else {hashmap.insert(num, true);}}println!("No pairs found");Ok(())}fn part2(input: &str) -> Result<()> {let mut vec: Vec<i32> = Vec::new();input.lines().for_each(|line| vec.push(line.parse::<i32>().expect("should be able to parse")));vec.sort();for left_ptr in 0..vec.len() {let mut mid_ptr = left_ptr + 1;let mut right_ptr = vec.len() - 1;loop {let value_at_left = vec[left_ptr];let value_at_mid = vec[mid_ptr];let value_at_right = vec[right_ptr];let sum = value_at_left + value_at_mid + value_at_right;if sum == 2020 {println!("{}", value_at_left * value_at_mid * value_at_right);return Ok(());}if sum < 2020 {mid_ptr += 1;} else {right_ptr -= 1;}}}Ok(())}
1544156019471659197219401977168919161638180415431789545968195917831869158119761859166017936916531866154119201751168118292009175268018641628191718762002197418271791155216691849116717441764191317821926179517381877181117461682194317611850983161719011750184215881679175919941847165719811648199615721953155516651680187218261316196218931545153518951819189119191853183170419781780172216521625478103019851720181726419881892171212221840189419061890184619391991183517991865166319081575197019561556168815581698177118071878170717701823180219301703113619101998197316111979161218381715188518791904194117341900180916911848168317541874197518961567178516441922165110461971160019331857196019481675182816331868161518841674186017759951596200617371649199717671784170516641766183915331935179617811589159419871769
[package]name = "aoc01"version = "0.1.0"authors = ["henil <dedaniahenil@gmail.com>"]edition = "2018"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]
# This file is automatically @generated by Cargo.# It is not intended for manual editing.[[package]]name = "aoc01"version = "0.1.0"