From cb14a763e1cb025d83bac6022e92470dc4ba2550 Mon Sep 17 00:00:00 2001
From: Philippe Zwietering
Date: Wed, 8 Dec 2021 15:31:53 +0100
Subject: [PATCH] Can't test the solution at internship, but I suspect it
should be close to correct
---
codeforces/educational_rounds/118/c.cpp | 49 ++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/codeforces/educational_rounds/118/c.cpp b/codeforces/educational_rounds/118/c.cpp
index 0c03bec..846442a 100644
--- a/codeforces/educational_rounds/118/c.cpp
+++ b/codeforces/educational_rounds/118/c.cpp
@@ -2,8 +2,55 @@
using namespace std;
-void test_case(int tc){
+typedef long long ll;
+vector attacks;
+
+ll damage(ll k){
+ ll result = k;
+
+ for(size_t i = 0; i < attacks.size() - 1; ++i){
+ result += min(k, attacks[i+1] - attacks[i]);
+ }
+
+ return result;
+}
+
+void test_case(int tc){
+ cout << "test";
+ int n;
+ ll h;
+
+ cin >> n >> h;
+
+ attacks.clear();
+ attacks.reserve(n);
+
+ for(int i = 0; i < n; ++i){
+ cin >> attacks[i];
+ }
+
+ ll lower = 1, upper = 1e18;
+ ll middle = (lower + upper) / 2;
+ ll dx = middle - lower;
+ ll k;
+
+ while(dx > 0){
+ k = damage(middle);
+ cout << k << " ";
+ if(k == h){
+ break;
+ } else if(k < h){
+ lower = middle + 1;
+ } else{
+ upper = middle;
+ }
+ middle = (lower + upper) / 2;
+ dx = middle - lower;
+ }
+
+ cout << '\n' << k << '\n';
+
}