Submission #1290437

#TimeUsernameProblemLanguageResultExecution timeMemory
1290437TimoshSoccer (JOI17_soccer)C++20
0 / 100
3 ms1852 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T>
using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define int int64_t
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define vi vector<int>
#define vii vector<vi>
#define ld long double
#define pii pair<int, int>
mt19937 mt(time(0));

namespace io
{
    template <typename T, typename F>
    istream &operator>>(istream &cin, pair<T, F> &pr)
    {
        cin >> pr.first >> pr.second;
        return cin;
    }

    template <typename T, typename F>
    ostream &operator<<(ostream &cout, pair<T, F> &pr)
    {
        cout << pr.first << ' ' << pr.second;
        return cout;
    }

    template <typename T>
    istream &operator>>(istream &cin, vector<T> &vec)
    {
        for (T &i : vec)
            cin >> i;
        return cin;
    }

    template <typename T>
    ostream &operator<<(ostream &cout, vector<T> vec)
    {
        for (T i : vec)
            cout << i << ' ';
        return cout;
    }
}
using namespace io;
const int M = 998244353;
vi f(2e5 + 5);

int pw(int x, int y, int p = M)
{
    x %= p;
    int res = 1;
    while (y)
    {
        if (y & 1)
            res = res * x % p;
        x = x * x % p;
        y /= 2;
    }
    return res;
}

int inv(int a, int p = M) { return pw(a, p - 2, p); }
int C(int n, int k)
{
    if (k > n || k < 0)
        return 0;
    return f[n] * inv(f[n - k] * f[k]) % M;
}

void solve()
{
    int h, w, n, a, b, c;
    cin >> h >> w >> a >> b >> c >> n;
    vector<pii> v(n);
    cin >> v;
    int d = (v[1].first - v[0].first) + (v[1].second - v[0].second);
    int mx = max(v[1].second - v[0].second, v[1].first - v[0].first);
    cout << min({mx * a + b + (d - mx) * c, c * d});
}

signed main()
{
    f[0] = 1;
    for (int i = 1; i <= 2e5; i++)
        f[i] = f[i - 1] * i % M;
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t = 1;
    // cin >> t;
    while (t--)
        solve(), cout << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...