Submission #165857

#TimeUsernameProblemLanguageResultExecution timeMemory
165857SegtreeAliens (IOI16_aliens)C++14
0 / 100
4 ms2296 KiB
#include<iostream> #include<algorithm> #include<vector> #include"aliens.h" using namespace std; typedef long long ll; typedef pair<ll,ll> P; #define chmin(a,b) a=min(a,b) #define chmax(a,b) a=max(a,b) #define N 510 vector<ll> l,r; ll take_photos(int n,int m,int K,vector<int> R,vector<int> C){ vector<P> v; for(int i=0;i<n;i++){ if(R[i]>C[i])swap(R[i],C[i]); v.push_back(make_pair((ll)R[i],(ll)C[i])); } sort(v.begin(),v.end()); ll rnd=-1; r.push_back(-1); for(auto p:v){ ll x=p.first,y=p.second+1; if(y<=rnd)continue; rnd=y; l.push_back(x); r.push_back(y); } n=l.size(); if(n==1)return (r[1]-l[0])*(r[1]-l[0]); ll dp[N][N]; for(int i=0;i<N;i++)for(int j=0;j<N;j++)dp[i][j]=1e17; dp[0][0]=l[0]*l[0]+r[n]*r[n]; for(int k=1;k<=K;k++)for(int i=1;i<=n;i++){ ll tei=r[i]*r[i]+l[i]*l[i]; if(i<n)tei-=max(0LL,r[n]-l[n])*max(0LL,r[n]-l[n]); for(int j=0;j<i;j++){ chmin(dp[i][k],tei+dp[j][k-1]-2*r[i]*l[j]); } //cout<<i<<" "<<k<<" "<<dp[i][k]<<endl; } ll ans=1e17; for(int j=0;j<=K;j++)chmin(ans,dp[n][j]); return ans; }
#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...