답안 #22947

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
22947 2017-04-30T16:27:10 Z sampriti Aliens (IOI16_aliens) C++14
0 / 100
0 ms 7792 KB
#include "aliens.h"

#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

int N, M, K;
vector<long long> R, C;
int R_map[1000000];
long long dp[500][500];

long long solve(int i, int j) {
  if(i == N) return 0;
  if(j == K && i < N) return LLONG_MAX/2;
  if(dp[i][j] != -1) return dp[i][j];

  dp[i][j] = LLONG_MAX/2;
  for(int k = i; k < N; k++) {
    long long width = max(C[i], max(R[k], C[k])) - R[i] + 1;
    dp[i][j] = min(dp[i][j], width * width + solve(k + 1, j + 1));
  }

  return dp[i][j];
}

long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) {
  N = n, M = m, K = k;
  for(int i = 0; i < N; i++) {
    if(c[i] < r[i]) {
      int t = r[i];
      r[i] -= (t - c[i]);
      c[i] = t;
    }
  }
  for(int i = 0; i < M; i++) R_map[i] = -1;
  for(int i = 0; i < N; i++) {
    R_map[r[i]] = max(R_map[r[i]], c[i]);
  }

  int cover = -1;
  for(int i = 0; i < M; i++) {
    if(R_map[i] == -1 || R_map[i] - i <= cover) {
      R_map[i] = -1;
    }
    else cover = R_map[i];
    cover--;
  }

  for(int i = 0; i < M; i++) {
    if(R_map[i] == -1) continue;
    R.push_back(i);
    C.push_back(R_map[i]);
  }
  N = R.size();

  for(int i = 0; i < N; i++) {
    for(int j = 0; j < K; j++) {
      dp[i][j] = -1;
    }
  }

  return solve(0, 0);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 7792 KB Correct answer: answer = 4
2 Correct 0 ms 7792 KB Correct answer: answer = 4
3 Correct 0 ms 7792 KB Correct answer: answer = 4
4 Incorrect 0 ms 7792 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 7792 KB Correct answer: answer = 1
2 Correct 0 ms 7792 KB Correct answer: answer = 4
3 Correct 0 ms 7792 KB Correct answer: answer = 1
4 Incorrect 0 ms 7792 KB Wrong answer: output = 1, expected = 5
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 7792 KB Correct answer: answer = 4
2 Correct 0 ms 7792 KB Correct answer: answer = 4
3 Correct 0 ms 7792 KB Correct answer: answer = 4
4 Incorrect 0 ms 7792 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 7792 KB Correct answer: answer = 4
2 Correct 0 ms 7792 KB Correct answer: answer = 4
3 Correct 0 ms 7792 KB Correct answer: answer = 4
4 Incorrect 0 ms 7792 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 7792 KB Correct answer: answer = 4
2 Correct 0 ms 7792 KB Correct answer: answer = 4
3 Correct 0 ms 7792 KB Correct answer: answer = 4
4 Incorrect 0 ms 7792 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 7792 KB Correct answer: answer = 4
2 Correct 0 ms 7792 KB Correct answer: answer = 4
3 Correct 0 ms 7792 KB Correct answer: answer = 4
4 Incorrect 0 ms 7792 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -