답안 #138699

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
138699 2019-07-30T08:45:05 Z Bohoty 곤돌라 (IOI14_gondola) C++14
55 / 100
118 ms 16604 KB
#include<bits/stdc++.h>
#include "gondola.h"

//#include "grader.cpp"
using namespace std;
const int N = 100 + 5, mod = 1e9 + 7;
int a, b, c, m;
int dp[N][N][N];
long long solve(int x, int y, int z, bool start){
  if (x > a || y > b || z > c)
    return 0;
  if (x == a && y == b && z == c)
    return 1;
  if (~dp[x][y][z])
    return dp[x][y][z];
  int n_x, n_y, n_z;
  if (start)
    n_x = n_y = n_z= m + 1;
  else
    n_x = n_y = n_z = max(max(x, y), z);
  return dp[x][y][z] = (solve(x + 1, y, z, 0)
  +  solve(x, y + 1, z, 0)
  + solve(x, y, z + 1, 0)) % mod;
}
int valid(int n, int inputSeq[]){
  int mn = 1e9;
  int idx = -1;
  map < int, int > mp;
  for(int i = 0 ; i < n ; i++){
    mp[inputSeq[i]]++;
    if (inputSeq[i] < mn){
      mn = inputSeq[i], idx = i;
    }
  }
  for(auto it :mp){
    if (it.second > 1)
    return 0;
  }
  int intended = mn;
  if (intended > n)
    return 1;
  for(int i = 0 ; i < n ; i++){
    int cur = inputSeq[(i + idx) % n];
    if (cur != intended){
      if (cur <= n)
        return 0;
    }
    intended++;
    if (intended > n)
    intended -= n;
  }
  return 1;
}
int replacement(int n, int gondolaSeq[], int replacementSeq[]){
  int mn = 1e9;
  int idx = -1;
  set < int > st, elements;
  int f[250001], now[250001];
  memset(f,0,sizeof f);
  memset(now,0,sizeof now);
  for(int i = 0 ; i < 250001 ; i++)
    now[i] = i;
  for(int i = n + 1 ; i <= 250000 ; i++)
    st.insert(i);
  map < int, int > mp;
  for(int i = 0 ; i < n ; i++){
    if (gondolaSeq[i] < mn){
      mn = gondolaSeq[i], idx = i;
    }
  }
  int intended = mn;
  if (intended > n)
    intended = 1;
  for(int i = 0 ; i < n ; i++){
    int cur = gondolaSeq[(i + idx) % n];
    if (cur != intended){
        mp[intended] = cur;
        f[cur] = intended;
        elements.insert(intended);
    }
    intended++;
    if (intended > n)
    intended -= n;
  }
  int j = 0;
  for(auto &it :st){
    if (elements.empty())
      break;
    if (f[it]){
      int z = now[f[it]];
      replacementSeq[j++] = z;
      elements.erase(f[it]);
    }
    else {
      int z = *elements.begin();
      replacementSeq[j] = now[z];
      now[z] = it;
      j++;
    }
  }
  return j;
}
int countReplacement(int n, int inputSeq[]){
  a= b= c= m = 0;
  memset(dp, -1, sizeof dp);
  int mn = 1e9;
  int idx = -1;
  for(int i = 0 ; i < n ; i++){
    if (inputSeq[i] < mn){
      mn = inputSeq[i], idx = i;
    }
  }
  int intended = mn;
  if (intended > n)
    intended = 1;
  vector < pair < int, int > > v;
  for(int i = 0 ; i < n ; i++){
    int cur = inputSeq[(i + idx) % n];
    if (cur != intended){
        v.push_back({cur, intended});
    }
    intended++;
    if (intended > n)
    intended -= n;
  }
  m = n;
  int x, y, z;
  x = y = z = 0;
  if (v.size()){
    x = v[0].second;
    a = v[0].first;
  }
  if (v.size() > 1){
    y = v[1].second;
    b = v[1].first;
  }
  if (v.size() > 2){
    z = v[2].second;
    c = v[2].first;
  }
  return solve(x, y, z, 1);
}

Compilation message

gondola.cpp: In function 'long long int solve(int, int, int, bool)':
gondola.cpp:16:7: warning: variable 'n_x' set but not used [-Wunused-but-set-variable]
   int n_x, n_y, n_z;
       ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 16 ms 2296 KB Output is correct
7 Correct 40 ms 3696 KB Output is correct
8 Correct 34 ms 4088 KB Output is correct
9 Correct 11 ms 1528 KB Output is correct
10 Correct 42 ms 4472 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 348 KB Output is correct
6 Correct 16 ms 2296 KB Output is correct
7 Correct 39 ms 3676 KB Output is correct
8 Correct 30 ms 4088 KB Output is correct
9 Correct 10 ms 1528 KB Output is correct
10 Correct 37 ms 4576 KB Output is correct
11 Correct 3 ms 376 KB Output is correct
12 Correct 2 ms 296 KB Output is correct
13 Correct 22 ms 2040 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 52 ms 4728 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 86 ms 14072 KB Output is correct
2 Correct 88 ms 14100 KB Output is correct
3 Correct 96 ms 14044 KB Output is correct
4 Correct 91 ms 14076 KB Output is correct
5 Correct 85 ms 13944 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 87 ms 14072 KB Output is correct
2 Correct 87 ms 13948 KB Output is correct
3 Correct 87 ms 14072 KB Output is correct
4 Correct 86 ms 13944 KB Output is correct
5 Correct 86 ms 14072 KB Output is correct
6 Correct 87 ms 13944 KB Output is correct
7 Correct 87 ms 14156 KB Output is correct
8 Correct 86 ms 14200 KB Output is correct
9 Correct 86 ms 14088 KB Output is correct
10 Correct 87 ms 14072 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 86 ms 13944 KB Output is correct
2 Correct 93 ms 14096 KB Output is correct
3 Correct 86 ms 14012 KB Output is correct
4 Correct 89 ms 14072 KB Output is correct
5 Correct 87 ms 14076 KB Output is correct
6 Correct 86 ms 14072 KB Output is correct
7 Correct 100 ms 14084 KB Output is correct
8 Correct 91 ms 14120 KB Output is correct
9 Correct 87 ms 14072 KB Output is correct
10 Correct 96 ms 14112 KB Output is correct
11 Correct 70 ms 10616 KB Output is correct
12 Correct 66 ms 10164 KB Output is correct
13 Correct 117 ms 16144 KB Output is correct
14 Correct 67 ms 10616 KB Output is correct
15 Correct 118 ms 16604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 4856 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 4856 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 4856 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 4856 KB Output isn't correct
2 Halted 0 ms 0 KB -