Submission #1144118

#TimeUsernameProblemLanguageResultExecution timeMemory
1144118ach00Aliens (IOI16_aliens)C++20
0 / 100
1 ms2376 KiB
#include <bits/stdc++.h>
#include "aliens.h"
using namespace std;
typedef long long ll;
#define INF 9000000000000
#define DP dp[i][p]
#define mN 520
#define mK 520
int N,M,K;
vector<ll> lower;
vector<ll> upper;
vector<pair<ll,ll>> points;
ll bar(ll i) { return lower[i];}
ll area(ll u, ll l) {
    return (u-l)*(u-l);
}
ll overlap(ll j, ll maxbar) {
    if(j == N) return 0;
    return (upper[j]-maxbar)*(upper[j]-maxbar);
}

vector<vector<ll>> dp(mN, vector<ll>(mK, -1));

ll solve(ll i, ll p) {
    if(i == N) return 0;
    if(p == 0) return INF;
    if(DP != -1) return DP;
    ll maxbar = bar(i);
    int k = i;
    ll ans = INF;
    while(k+1 != N && upper[k+1] == i) { 
        maxbar = max(maxbar, bar(k)); 
        k++;    
    }
    for(int j = k; j < N; j++) {
        maxbar = max(maxbar, bar(j));
        while(j+1 != N && bar(j+1) <= maxbar) j++;
        ll res = area(upper[i], maxbar) + solve(j+1, p-1) - overlap(j+1, maxbar);
        ans = min(ans, res);
    }
    return (DP = ans);
}


long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) {
    N = n;
    M = m;
    K = k;
    vector<ll> Lower;
    vector<ll> Upper;
    vector<pair<ll,ll>> Points;
    for(int i = 0; i < N; i++) {
        if(r[i] > c[i]) swap(r[i], c[i]);
        c[i] += 1;
        Points.push_back({r[i], c[i]});
        Lower.push_back({c[i]});
        Upper.push_back({r[i]});
    }
    vector<pair<ll,ll>> sortation;
    for(int i = 0; i < n; i++) {
        sortation.push_back({Upper[i], i});
    }
    sort(sortation.begin(), sortation.end());
    for(int i = 0; i < n; i++) {
        upper.push_back(Upper[sortation[i].second]);
        lower.push_back(Lower[sortation[i].second]);
        points.push_back(Points[sortation[i].second]);
    }
    
    return solve(0, k);
}

Compilation message (stderr)

aliens.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
aliens_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...