제출 #1228405

#제출 시각아이디문제언어결과실행 시간메모리
1228405LucaIlieAliens (IOI16_aliens)C++20
25 / 100
105 ms4324 KiB
#include "aliens.h" #include <vector> #include <stdio.h> #include <algorithm> using namespace std; struct interval { int l, r; bool operator < (interval a) { if (l == a.l) return r > a.r; return l < a.l; } }; const int MAX_N = 2000; const int MAX_K = 2000; const long long INF = 1e18; long long dp[MAX_N][MAX_K]; interval v[MAX_N + 1]; long long take_photos(int n, int m, int k, vector<int> R, vector<int> C) { vector<interval> rc(n); for (int i = 0; i < n; i++) { if (R[i] > C[i]) swap(R[i], C[i]); C[i]++; rc[i] = {R[i], C[i]}; } sort(rc.begin(), rc.end()); n = 0; int maxR = -1; for (interval a: rc) { // printf("%d %d\n", a.l, a.r); if (a.r > maxR) { v[++n] = a; maxR = a.r; } } for (int i = 1; i <= n; i++) dp[i][0] = INF; for (int i = 1; i <= n; i++) { for (int l = 1; l <= k; l++) { dp[i][l] = INF; for (int j = 1; j <= i; j++) { long long len = (v[i].r - v[j].l); long long over = max(0, (v[j - 1].r - v[j].l)); dp[i][l] = min(dp[i][l], dp[j - 1][l - 1] + len * len - over * over); } // printf("%d %d %lld\n", i, l, dp[i][l]); } } return dp[n][k]; }

컴파일 시 표준 에러 (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...