제출 #1195959

#제출 시각아이디문제언어결과실행 시간메모리
1195959sheina906Colouring a rectangle (eJOI19_colouring)C++20
0 / 100
2097 ms25456 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define f first
#define s second


// int main()
// {
//     ll m, n; cin >> m >> n;
//     ll d = m+n-1;
//     ll mn = 100000000000000;
//     vector<ll> v1(d), v2(d);
//     for (ll &i : v1) cin >> i;
//     for (ll &i : v2) cin >> i;

//     for (ll k1 = 0; k1 < (1<<d); k1++)
//     {
//         ll k2 = 0, t = 0;
//         for (ll i = 0; i < m; i++) 
//         {
//             for (ll j = 0; j < n; j++) 
//             {
//                 if (!(k1 & (1<<(i-j+n-1)))) k2 |= (1<<(i+j));
//             }
//         }

//         for (int i = 0; i < d; i++) 
//         {
//             if (k1 & (1<<i)) t += v1[i];
//             if (k2 & (1<<i)) t += v2[i];
//         }

//         mn = min(mn, t);
//     }


//     cout << mn << '\n';


//     return 0;
// }



bool erase(bool r, int ind, vector<vector<ll>> &v, ll d, ll n, ll m)
{
    for (ll k = 0; k < d; k++) 
    {
        if (v[!r][k] != -1) continue;
        ll t = k+1+ind-n;
        if (t&1) continue;
        t /= 2;
        ll t1 = -t;
        t1 += r ? ind : k;
        if (0 <= t && t < m && 0 <= t1 && t1 < n) return false;
    }
    return true;
}

int main()
{
    ll m, n; cin >> m >> n;
    ll d = m+n-1, x = 0, t;
    vector<vector<ll>> v(2, vector<ll> (d));
    vector<pair<ll, pair<bool, ll>>> srt(2*d);
    for (int i = 0; i < d; i++) 
    {
        cin >> t;
        x += t;
        v[0][i] = t;
        srt[i] = {t, {0, i}};
    }
    for (int i = 0; i < d; i++)
    {
        cin >> t;
        x += t;
        v[1][i] = t;
        srt[i+d] = {t, {1, i}};
    }
    sort(srt.begin(), srt.end());


    for (int i = 2*d-1; i >= 0; i--)
    {
        if (erase(srt[i].s.f, srt[i].s.s, v, d, n, m))
        {
            x -= srt[i].f;
            v[srt[i].s.f][srt[i].s.s] = -1;
        }
    }


    cout << x << '\n';


    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...