# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
130562 | KieranHorgan | Aliens (IOI16_aliens) | C++17 | 2090 ms | 704832 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("Ofast")
#pragma GCC targe("avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
#include "aliens.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<pair<int, int>> intervals;
int cost(int i, int l) {
int overlap = max(0ll, intervals[l].second-intervals[l+1].first+1);
return (intervals[i].second-intervals[l+1].first+1)*(intervals[i].second-intervals[l+1].first+1) - overlap*overlap;
}
signed n;
vector<vector<int>> dp, opt;
int j;
void recurse(int l, int r) {
if(l==r) return;
int i = (l+r)/2;
for(int cur = opt[j][l-1]; cur < (r==n+1?i:opt[j][r]+1); cur++) {
if(dp[j-1][cur] + cost(i, cur) < dp[j][i]) {
opt[j][i] = cur;
dp[j][i] = dp[j-1][cur] + cost(i, cur);
}
}
if(l+1 != r) {
recurse(l, i);
recurse(i+1, r);
}
Compilation message (stderr)
# | 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... |