제출 #48717

#제출 시각아이디문제언어결과실행 시간메모리
48717faustaadpAliens (IOI16_aliens)C++17
25 / 100
184 ms7268 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;
        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(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...