Submission #48720

#TimeUsernameProblemLanguageResultExecution timeMemory
48720faustaadpAliens (IOI16_aliens)C++17
25 / 100
192 ms7180 KiB
#include<bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; #include "aliens.h" ll d[550][1010],i,j,b[1010],te,N,me[1010][1010]; pair<ll,ll> a[1010]; ll inter(ll aa,ll bb) { if(bb==N+1) return 0; if(a[aa].se<a[bb].fi||a[aa]==a[bb]) return 0; return (a[bb].fi-a[aa].se-1)*(a[bb].fi-a[aa].se-1); } ll depe(ll aa,ll bb) { if(aa==N+1) return 0; if(bb<=0) return 1e18; if(d[aa][bb]==-1) { d[aa][bb]=1e18; ll ii,L=aa,R=N,C1,C2,CC1,CC2; while(R-L>1000) { C1=L+(R-L)/3; C2=R-(R-L)/3; CC1=depe(C1+1,bb-1)+(a[C1].se-a[aa].fi+1)*(a[C1].se-a[aa].fi+1)-inter(C1,C1+1); CC2=depe(C2+1,bb-1)+(a[C2].se-a[aa].fi+1)*(a[C2].se-a[aa].fi+1)-inter(C2,C2+1); if(CC1<CC2) R=C2-1; else L=C1+1; d[aa][bb]=min(d[aa][bb],min(CC1,CC2)); } for(ii=L;ii<=R;ii++) d[aa][bb]=min(d[aa][bb],depe(ii+1,bb-1)+(a[ii].se-a[aa].fi+1)*(a[ii].se-a[aa].fi+1)-inter(ii,ii+1)); } return d[aa][bb]; } long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) { for(i=0;i<n;i++) for(j=0;j<n;j++) { ll Ki=min(r[i],c[i]); ll Ka=max(r[i],c[i]); if(Ki==min(r[j],c[j])&&Ka==max(r[j],c[j])) continue; if(i==j) continue; if(Ki<r[j]&&r[j]<Ka&&Ki<c[j]&&c[j]<Ka) b[j]=1; } for(i=0;i<n;i++) if(!b[i]&&me[min(c[i],r[i])][max(r[i],c[i])]==0) { te++; a[te]=mp(min(r[i],c[i]),max(r[i],c[i])); me[min(c[i],r[i])][max(r[i],c[i])]=1; } memset(d,-1,sizeof(d)); N=te; sort(a+1,a+1+N); for(i=1;i<N;i++) if(a[i].se>a[i+1].se) while(1); // for(i=1;i<=N;i++) // cout<<a[i].fi<<" "<<a[i].se<<"\n"; // cout<<N<<"\n"; return depe(1,k); }
#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...