# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
382357 | kshitij_sodani | Aliens (IOI16_aliens) | C++14 | 163 ms | 4332 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,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first
#define b second
#define xx int
//#define endl '\n'
#include "aliens.h"
int mi[1000001];
llo dp[4001][4001];
long long take_photos(xx n, xx m, xx k,vector<xx> aa,vector<xx> bb) {
vector<pair<llo,llo>> ss;
for(llo i=0;i<m;i++){
mi[i]=-1;
}
for(llo i=0;i<n;i++){
mi[min(aa[i],bb[i])]=max(mi[min(aa[i],bb[i])],max(aa[i],bb[i]));
}
llo cur=-1;
for(llo i=0;i<m;i++){
if(mi[i]!=-1){
if(mi[i]>cur){
ss.pb({i,mi[i]});
cur=mi[i];
}
}
}
for(llo i=1;i<=k;i++){
for(llo j=0;j<ss.size();j++){
dp[j][i]=(ss[j].b-ss[0].a+1);
dp[j][i]*=dp[j][i];
if(i==1){
continue;
}
for(llo ii=0;ii<j;ii++){
llo cur=max(ss[ii].b+1-ss[j].a,(llo)0);
cur*=cur;
dp[j][i]=min(dp[j][i],dp[ii][i-1]+(ss[j].b-ss[ii+1].a+1)*(ss[j].b-ss[ii+1].a+1)-cur);
}
}
}
/*cout<<dp[0][1]<<"::"<<dp[1][1]<<endl;
for(auto j:ss){
cout<<j.a<<":"<<j.b<<endl;
}
cout<<endl;
*/
return dp[ss.size()-1][k];
}
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... |