Submission #274889

#TimeUsernameProblemLanguageResultExecution timeMemory
274889index_Cooking (innopolis2018_final_B)C++17
100 / 100
1 ms512 KiB
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <cmath>
#include <unordered_set>
#include <unordered_map>
#include <iomanip>
#include <deque>
#include <chrono>
#include <cassert>
#include <bitset>
#include <random>

using namespace std;

typedef long long li;
typedef  long double ld;
const li MAX = 3e5 + 5;

li inf = (li)2e18;
li mod = (li)998244353;

li d, k, t;

li f(li num) {
    li am = num;
    am += (num / d) * k;
    am += min(num % d, k);
    return am;
}
void solve() {
    cin >> k >> d >> t;
    if (k % d != 0)
        d = k - k % d + d;
    else d = k;
    t *= 2;
    li uk1 = 0, uk2 = inf;
    while (uk2 - uk1 > 1) {
        li mid = (uk2 + uk1) / 2;
        li am = f(mid);
        if (am <= t) uk1 = mid;
        else uk2 = mid;
    }

    if (f(uk1) < t) cout << setprecision(20) << ld(uk1) + ld(0.5);
    else cout << uk1;
}


int main() {
    mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
    ios::sync_with_stdio(0);
    li q;
    q = 1;
    while (q--) solve();

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...