제출 #1151909

#제출 시각아이디문제언어결과실행 시간메모리
1151909alexddAliens (IOI16_aliens)C++20
0 / 100
0 ms324 KiB
#include "aliens.h"
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e18;
pair<int,int> v[100005],newv[100005];
long long take_photos(int32_t n, int32_t m, int32_t k, std::vector<int32_t> x, std::vector<int32_t> y)
{
    for(int i=0;i<n;i++)
    {
        if(x[i] < y[i])
            swap(x[i],y[i]);
        v[i+1] = {x[i],y[i]};
    }
    sort(v+1,v+1+n);
    int newn=0;
    for(int i=1;i<=n;i++)
        if(i==1 || v[i]!=v[i-1])
            newv[++newn] = v[i];
    n = newn;
    for(int i=1;i<=n;i++)
        v[i] = newv[i];

    newn=0;
    int cv=INF;
    for(int i=n;i>0;i--)
    {
        if(v[i].second < cv)
        {
            newv[++newn] = v[i];
            cv = v[i].second;
        }
    }

    reverse(newv+1,newv+1+newn);
    n = newn;
    for(int i=1;i<=n;i++)
        v[i] = newv[i];

    k = min(k, n);
    
    vector<vector<int>> dp(n+2,vector<int>(k+2,INF));
    for(int j=0;j<=k;j++)
        dp[0][j]=0;

    for(int i=1;i<=n;i++)
    {
        for(int cnt=1;cnt<=k;cnt++)
        {
            for(int u=i-1;u>=0;u--)
            {
                if(v[u+1].second > v[u].first)
                {
                    dp[i][cnt] = min(dp[i][cnt], dp[u][cnt-1] + v[u+1].second*v[u+1].second + 1 - 2*v[u+1].second * (v[i].first+1));
                }
                else
                {
                    dp[i][cnt] = min(dp[i][cnt], dp[u][cnt-1] + 2*v[u+1].second * (v[u].first+1) - v[u].first*(v[u].first+2) - 2*v[u+1].second * (v[i].first+1));
                }

            }
            dp[i][cnt] += v[i].first*(v[i].first+2);
        }
    }

    int mnm=INF;
    for(int i=0;i<=k;i++)
        mnm = min(mnm, dp[n][i]);
    return mnm;
}
/*

5 7 2
0 3
4 4
4 6
4 5
4 6

output:
25



2 6 2
1 4
4 1

output:
16





*/

컴파일 시 표준 에러 (stderr) 메시지

aliens.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
aliens_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...