backup
This commit is contained in:
parent
434f3b0d3e
commit
d5902e616d
|
@ -0,0 +1,5 @@
|
||||||
|
pub mod sibling_mod {
|
||||||
|
pub fn sibling_fn() {
|
||||||
|
println!("Hello, sibling!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
use std::io::stdin;
|
||||||
|
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn max_distance(mut position: Vec<i32>, m: i32) -> i32 {
|
||||||
|
position.sort_unstable();
|
||||||
|
let mut l = 0;
|
||||||
|
let mut r = position.last().unwrap().to_owned() - position.first().unwrap().to_owned();
|
||||||
|
while l != r {
|
||||||
|
let mid = l + r + 1 >> 1;
|
||||||
|
let mut prev = -mid;
|
||||||
|
let mut cnt = 0;
|
||||||
|
for &x in position.iter() {
|
||||||
|
if x - prev < mid { continue; }
|
||||||
|
cnt += 1;
|
||||||
|
prev = x;
|
||||||
|
}
|
||||||
|
if cnt < m {
|
||||||
|
r = mid - 1;
|
||||||
|
} else {
|
||||||
|
l = mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
l
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buf = String::new();
|
||||||
|
stdin().read_line(&mut buf).ok();
|
||||||
|
let position = buf.trim().split(' ').map(|x|x.parse::<i32>().unwrap()).collect::<Vec<i32>>();
|
||||||
|
buf.clear();
|
||||||
|
stdin().read_line(&mut buf).ok();
|
||||||
|
let m = buf.trim().parse::<i32>().unwrap();
|
||||||
|
println!("{}", Solution::max_distance(position, m));
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn min_operations_max_profit(customers: Vec<i32>, boarding_cost: i32, running_cost: i32) -> i32 {
|
||||||
|
let delta = 4 * boarding_cost - running_cost;
|
||||||
|
let mut max_tm = 0;
|
||||||
|
let mut max_amount = 0;
|
||||||
|
let mut curr_tm = 0;
|
||||||
|
let mut curr_amount = 0;
|
||||||
|
let mut cand_amount = 0;
|
||||||
|
let mut ac = 0;
|
||||||
|
for (i, &x) in customers.iter().enumerate() {
|
||||||
|
let i = i as i32;
|
||||||
|
if curr_tm < i {
|
||||||
|
ac = 0;
|
||||||
|
curr_tm = i;
|
||||||
|
curr_amount = cand_amount - (i - curr_tm) * running_cost;
|
||||||
|
}
|
||||||
|
let x = x + ac;
|
||||||
|
curr_amount += (x >> 2) * delta;
|
||||||
|
curr_tm += x >> 2;
|
||||||
|
if curr_amount > max_amount || curr_amount == max_amount && curr_tm < max_tm {
|
||||||
|
max_tm = curr_tm;
|
||||||
|
max_amount = curr_amount;
|
||||||
|
}
|
||||||
|
let residual = x - (x >> 2 << 2);
|
||||||
|
ac = residual;
|
||||||
|
let tmp = curr_amount + residual * boarding_cost - running_cost;
|
||||||
|
cand_amount = tmp;
|
||||||
|
if tmp > max_amount {
|
||||||
|
max_tm = curr_tm + 1;
|
||||||
|
max_amount = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if max_amount <= 0 {
|
||||||
|
-1
|
||||||
|
} else {
|
||||||
|
max_tm
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buf = String::new();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let customers: Vec<i32> = buf.trim().split(' ').map(|x|x.parse::<i32>().unwrap()).collect::<Vec<i32>>();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let boarding_cost: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let running_cost: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
println!("{}", Solution::min_operations_max_profit(customers, boarding_cost, running_cost));
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn minimum_size(nums: Vec<i32>, max_operations: i32) -> i32 {
|
||||||
|
let mut l = 1;
|
||||||
|
let mut r = *nums.iter().max().unwrap();
|
||||||
|
while l != r {
|
||||||
|
let mid = l + r >> 1;
|
||||||
|
eprint!("{:?} ", mid);
|
||||||
|
let mut cnt = 0;
|
||||||
|
for &x in nums.iter() {
|
||||||
|
cnt += (x - 1) / mid;
|
||||||
|
}
|
||||||
|
eprintln!("{:?}", cnt);
|
||||||
|
if cnt > max_operations {
|
||||||
|
l = mid + 1;
|
||||||
|
} else {
|
||||||
|
r = mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
l
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buf = String::new();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let nums: Vec<i32> = buf.trim().split(' ').map(|x|x.parse::<i32>().unwrap()).collect::<Vec<i32>>();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let max_operations: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
println!("{}", Solution::minimum_size(nums, max_operations));
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn maximum_candies(candies: Vec<i32>, k: i64) -> i32 {
|
||||||
|
let check = |m: i32| {
|
||||||
|
let mut cnt = 0;
|
||||||
|
candies.iter().for_each(|&x|cnt += (x / m) as i64);
|
||||||
|
cnt >= k
|
||||||
|
};
|
||||||
|
let mut l = 1;
|
||||||
|
let mut r = *candies.iter().min().unwrap() ;
|
||||||
|
while l != r {
|
||||||
|
let mid = l + r + 1 >> 1;
|
||||||
|
if !check(mid) {
|
||||||
|
r = mid - 1;
|
||||||
|
} else {
|
||||||
|
l = mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if check(l) {
|
||||||
|
l
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buf = String::new();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let candies: Vec<i32> = buf.trim().split(' ').map(|x|x.parse::<i32>().unwrap()).collect::<Vec<i32>>();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let k: i64 = buf.trim().parse::<i64>().unwrap();
|
||||||
|
println!("{}",Solution::maximum_candies(candies, k));
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn minimize_array_value(nums: Vec<i32>) -> i32 {
|
||||||
|
let mut l = 0;
|
||||||
|
let mut r = *nums.iter().max().unwrap();
|
||||||
|
while l != r {
|
||||||
|
let mid = l + r >> 1;
|
||||||
|
let mut ac = 0i64;
|
||||||
|
for &x in nums.iter().rev() {
|
||||||
|
ac = 0.max(x as i64 + ac - mid as i64);
|
||||||
|
}
|
||||||
|
if ac > 0 {
|
||||||
|
l = mid + 1;
|
||||||
|
} else {
|
||||||
|
r = mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
l
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buf = String::new();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let nums: Vec<i32> = buf.trim().split(' ').map(|x|x.parse::<i32>().unwrap()).collect::<Vec<i32>>();
|
||||||
|
println!("{}", Solution::minimize_array_value(nums));
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn minimize_set(divisor1: i32, divisor2: i32, unique_cnt1: i32, unique_cnt2: i32) -> i32 {
|
||||||
|
let divisor1 = divisor1 as i64;
|
||||||
|
let divisor2 = divisor2 as i64;
|
||||||
|
let unique_cnt1 = unique_cnt1 as i64;
|
||||||
|
let unique_cnt2 = unique_cnt2 as i64;
|
||||||
|
let gcd = |mut x: i64, mut y: i64|{
|
||||||
|
while y != 0 {
|
||||||
|
(x, y) = (y, x % y);
|
||||||
|
}
|
||||||
|
x
|
||||||
|
};
|
||||||
|
let mut l = 1;
|
||||||
|
let mut r = i64::MAX;
|
||||||
|
let lcm = divisor1 * divisor2 / gcd(divisor1, divisor2);
|
||||||
|
while l != r {
|
||||||
|
let mid = l + (r - l >> 1); // mid == 11
|
||||||
|
let a = mid / divisor1; // a == 5
|
||||||
|
let b = mid / divisor2; // b == 2, c == 2
|
||||||
|
let c = mid / lcm; // c == 3
|
||||||
|
let o = mid - a - b + c; // o == 6
|
||||||
|
eprintln!("mid = {mid}, a = {a}, b = {b}, c = {c}, o = {o}");
|
||||||
|
if b - c + o < unique_cnt1 || a - c + o - 0.max(unique_cnt1 - b + c) < unique_cnt2 {
|
||||||
|
l = mid + 1;
|
||||||
|
} else {
|
||||||
|
r = mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
l as i32
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buf = String::new();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let divisor1: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let divisor2: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let unique_cnt1: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
buf.clear();
|
||||||
|
std::io::stdin().read_line(&mut buf).ok();
|
||||||
|
let unique_cnt2: i32 = buf.trim().parse::<i32>().unwrap();
|
||||||
|
println!("{}", Solution::minimize_set(divisor1, divisor2, unique_cnt1, unique_cnt2));
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
struct Solution;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn intersection_size_two(mut intervals: Vec<Vec<i32>>) -> i32 {
|
||||||
|
intervals.sort_unstable_by(|x,y|
|
||||||
|
if x[1] == y[1] {
|
||||||
|
y[0].cmp(&x[0])
|
||||||
|
} else {
|
||||||
|
x[1].cmp(&y[1])
|
||||||
|
}
|
||||||
|
);
|
||||||
|
let mut t1 = -1;
|
||||||
|
let mut t2 = -1;
|
||||||
|
let mut res = 0;
|
||||||
|
for x in intervals {
|
||||||
|
if x[0] > t2 {
|
||||||
|
t1 = x[1] - 1;
|
||||||
|
t2 = x[1];
|
||||||
|
res += 2;
|
||||||
|
} else if x[0] > t1 {
|
||||||
|
t1 = t2;
|
||||||
|
t2 = x[1];
|
||||||
|
res += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
pub mod a_mod {
|
||||||
|
pub fn hello_world() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
pub mod another_mod {
|
||||||
|
pub fn another_fn() {
|
||||||
|
println!("Hello world again!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
mod a_crate;
|
||||||
|
pub use self::a_crate::another_mod;
|
Loading…
Reference in New Issue