Submission #165855

#TimeUsernameProblemLanguageResultExecution timeMemory
165855SegtreeAliens (IOI16_aliens)C++14
25 / 100
175 ms2552 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; l.push_back(-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); //cout<<"#"<<l.back()<<" "<<r.back()<<endl; } n=l.size()-1; //cout<<n<<endl; ll dp[N][N]; for(int i=0;i<=n;i++)for(int j=0;j<=k;j++)dp[i][j]=1e17; dp[0][0]=0; for(int i=0;i<=n;i++)for(int j=0;j<=k;j++){ //cout<<i<<" "<<j<<" "<<dp[i][j]<<endl; for(int t=i+1;t<=n;t++){ ll cost=dp[i][j]+(r[t]-l[i+1])*(r[t]-l[i+1]); ll x=max(0LL,r[i]-l[i+1]); cost-=x*x; chmin(dp[t][j+1],cost); } } 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...