Submission #1224679

#TimeUsernameProblemLanguageResultExecution timeMemory
1224679maya_sAliens (IOI16_aliens)C++20
0 / 100
0 ms324 KiB
#include "aliens.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<ll, pair<pll, pll>> ppll;
const ll inf = 1e18;

pll united_loc(pll a, pll b){
    return {min(a.first, b.first), max(a.second, b.second)};
}

ll calc_difference(pll a, pll b){
    return max(a.second, b.second) * max(a.second, b.second) - a.second * a.second - b.second * b.second + min(a.second, b.second) * min(a.second, b.second);
}

long long take_photos(int n, int m, int k, vector<int> r, vector<int> c) {
    ll cnt = 0;
    vector<ll> v(m);
    for(ll i = 0; i < n; i++) v[r[i]] = max(v[r[i]], (ll)abs(r[i] - c[i]));
    set<pll> s;
    ll ans = 0;
    for(ll i = 0; i < n; i++) s.insert({r[i], v[r[i]]}), ans += v[r[i]] * v[r[i]];
    while(s.size() > k){
        pll prev = {-1, -1};
        ppll mi = {inf, {{-1, -1}, {-1, -1}}};
        for(pll i : s){
            if(prev.first != -1) mi = min(mi, {calc_difference(prev, i), {prev, i}});
            prev = i;
        }
        auto[x, p] = mi;
        auto[a, b] = p;
        s.erase(a); s.erase(b);
        s.insert(united_loc(a, b));
        ans += x;
    }
    return ans;
}

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...