#include "aliens.h"
#include<iostream>
#include<vector>
#include<queue>
#include<deque>
#include<string>
#include<fstream>
#include<algorithm>
#include <iomanip>
#include<map>
#include <set>
#include <unordered_map>
#include <stack>
#include <unordered_set>
#include <cmath>
#include <cstdint>
#include <cassert>
#include <bitset>
#include <random>
#include <chrono>
#include <cstring>
#define shit short int
#define ll long long
#define ld long double
//#define int ll
#define For(i, n) for(int i = 0; i < (int)n; i++)
#define ffor(i, a, n) for(int i = (int)a; i < (int)n; i++)
#define rfor(i, n) for(int i = (int)n; i >= (int)0; i--)
#define rffor(i, a, n) for(int i = (int)n; i >= (int)a; i--)
#define vec vector
#define ff first
#define ss second
#define pb push_back
#define pii pair<int, int>
#define pld pair<ld, ld>
#define NEK 200000000000000
#define mod 1000000007
#define mod2 1000000009
#define rsz resize
#define prv 43
#define prv2 47
#define D 8
#define trav(a,x) for (auto& a: x)
#define pb push_back
#define ub upper_bound
#define lb lower_bound
#define all(x) (x).begin(), (x).end()
#define sig 0.0000001
using namespace std;
long long take_photos(int n, int m, int k, vector<int> r, vector<int> c) {
//zapnime kompresiu suradnic
set<int> sc;
vec<int> pr(m, -1), ps(n, m);
For(i, n) {
if (r[i] > c[i]) swap(r[i], c[i]);
sc.insert(c[i]);
}
unordered_map<int, int> umap;
vec<int> comp;
sc.insert(0);
for (auto i : sc) {
umap[i] = umap.size();
comp.push_back(i);
}
For(i, n) {
pr[r[i]] = max(pr[r[i]], umap[c[i]]);
ps[umap[c[i]]] = min(ps[umap[c[i]]], r[i]);
}
vec<int> kto_p(comp.size(), m);
kto_p[comp.size() - 1] = ps[comp.size() - 1];
for (int i = comp.size() - 2; i >= 0; i--) {
kto_p[i] = min(kto_p[i + 1], ps[i]);
}
vec<vec<ll>> dp(comp.size() + 1, vec<ll>(k + 1, NEK));
For(i, k+1) dp[comp.size()][i] = 0;
ffor(j, 1, k+1) {
rfor(i, comp.size() - 1) {
int som = kto_p[i];
for (int l = pr[som]; l < comp.size(); l++) {
//berieme az po stlpec comp[l], teda stvorec velkosti comp[l] - som + 1
dp[i][j] = min(dp[i][j], dp[l+1][j - 1] + ((ll)comp[l] - (ll)som + (ll)1) * ((ll)comp[l] - (ll)som + (ll)1) - max((ll)0, ((ll)comp[i] - (ll)som)) * max((ll)0, ((ll)comp[i] - (ll)som)));
}
}
}
return dp[0][k];
}
/*
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m, k; cin >> n >> m >> k;
vec<int> r(n), c(n);
For(i, n) {
cin >> r[i] >> c[i];
}
cout << take_photos(n, m, k, r, c) << '\n';
return 0;
}*/
컴파일 시 표준 에러 (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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |