Submission #291233

#TimeUsernameProblemLanguageResultExecution timeMemory
291233peti1234Aliens (IOI16_aliens)C++17
25 / 100
253 ms4736 KiB
#include <bits/stdc++.h>

using namespace std;
const int c=502;
long long dp[c][c];
vector<pair<int, int> > sz;
long long take_photos(int n, int m, int t, vector<int> x, vector<int> y) {
    for (int i=0; i<n; i++) {
        int a=min(x[i], y[i]), b=max(x[i], y[i]);
        sz.push_back({a, b});
    }
    sort(sz.begin(), sz.end());
    for (int i=1; i<=n; i++) for (int j=0; j<=t; j++) dp[i][j]=1e9;
    for (int i=0; i<n; i++) for (int j=0; j<t; j++) {
        int maxi=-1, e=sz[i].first, h=0;
        for (int k=0; k<i; k++) maxi=max(maxi, sz[k].second);
        maxi=max(0, maxi-e+1);
        for (int k=i; k<n; k++) {
            h=max(h, sz[k].second);
            if (h>=maxi+e) dp[k+1][j+1]=min(dp[k+1][j+1], dp[i][j]+(h-e+1)*(h-e+1)-maxi*maxi);
            //cout << "dp " << i << " " << k+1 << " " << j+1 << " " << dp[k+1][j+1] << "\n";
        }
    }
    return dp[n][t];
}
#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...