Submission #1247606

#TimeUsernameProblemLanguageResultExecution timeMemory
1247606julia_08Aliens (IOI16_aliens)C++20
16 / 100
98 ms4392 KiB
#include <bits/stdc++.h>
#include "aliens.h"

using ll = long long;

using namespace std;

const int MAXN = 1e3 + 10;

int dp[MAXN][MAXN], marc[MAXN];

int s[MAXN][MAXN];

int first_solve(int n, int m, int k, vector<int> r, vector<int> c){

  for(int i=1; i<=m; i++){
    for(int j=1; j<=m; j++){
      s[i][j] = 0;
    }
  }

  for(int i=0; i<n; i++){

    r[i] ++;
    c[i] ++;

    if(r[i] < c[i]) swap(r[i], c[i]);

    for(int j=c[i]; j<=r[i]; j++){
      for(int k=c[i]; k<=r[i]; k++){
        s[j][k] ++;
      }
    }

  } 

  int cnt = 0;

  for(int i=1; i<=m; i++){
    for(int j=1; j<=m; j++){
      if(s[i][j] > 0) cnt ++;
    }
  }

  return cnt;

}

ll take_photos(int n, int m, int k, vector<int> r, vector<int> c){

  if(k == n) return first_solve(n, m, k, r, c);

  for(int i=1; i<=m; i++) marc[i] = 0;

  for(int i=0; i<n; i++) marc[r[i] + 1] ++;

  for(int i=1; i<=m; i++){
    for(int l=0; l<=k; l++){

      dp[i][l] = 1e9;

      if(!marc[i]) dp[i][l] = dp[i - 1][l];

      if(l == 0) continue;

      for(int j=0; j<i; j++){
        dp[i][l] = min(dp[i][l], dp[j][l - 1] + (i - j) * (i - j));
      }

    }
  }

  return dp[m][k];

}

Compilation message (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...