Submission #1153511

#TimeUsernameProblemLanguageResultExecution timeMemory
1153511vladiliusCoin Collecting (JOI19_ho_t4)C++20
37 / 100
178 ms339968 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define pb push_back
#define ff first
#define ss second
const ll inf = 1e18;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n; cin>>n;
    int m = 2 * n;
    vector<pii> f = {{}};
    for (int i = 1; i <= m; i++){
        int x, y; cin>>x>>y;
        f.pb({x, y});
    }
    
    sort(f.begin() + 1, f.end());
    
    vector<vector<ll>> dp(m + 1, vector<ll>(n + 1, inf)); dp[0][0] = 0;
    for (int s = 1; s <= m; s++){
        auto [x, y] = f[s];
        for (int j = 0; j <= min(n, s); j++){
            int i = s - j;
            if (i) dp[s][j] = min(dp[s][j], dp[s - 1][j] + abs(x - i) + abs(y - 1));
            if (j){
                ll f = dp[s - 1][j - 1] + abs(x - j) + abs(y - 2);
                dp[s][j] = min(dp[s][j], f);
            }
        }
    }

    cout<<dp[m][n]<<"\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...