제출 #48704

#제출 시각아이디문제언어결과실행 시간메모리
48704faustaadpAliens (IOI16_aliens)C++17
12 / 100
134 ms7004 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) return 0; return (a[bb].fi-a[aa].se)*(a[bb].fi-a[aa].se); } 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; for(ii=aa;ii<=N;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(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++) // 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...