답안 #920783

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
920783 2024-02-03T03:22:07 Z rxlfd314 곤돌라 (IOI14_gondola) C++17
70 / 100
16 ms 1928 KB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;

#define vt vector
#define size(x) (int((x).size()))
#define all(x) begin(x), end(x)

#define REP(a, b, c, d) for (int a = (b); (d) > 0 ? a <= (c) : a >= (c); a += (d))
#define FOR(a, b, c) REP(a, b, c, 1)
#define ROF(a, b, c) REP(a, b, c, -1)

int valid(int N, int *A) {
  vt<int> cnt(N);
  FOR(i, 0, N-1) {
    A[i]--;
    if (A[i] < N && ++cnt[A[i]] > 1)
      return 0;
  }
  FOR(i, 0, N-1)
    if (A[i] < N) {
      FOR(j, 0, N-1)
        if (A[(i+j)%N] < N && A[(i+j)%N] != (A[i]+j)%N)
          return 0;
      break;
    }
  return 1;
}

int replacement(int N, int *A, int *ans) {
  int start = 0;
  FOR(i, 0, N-1)
    if (A[i]-- < 2)
      start = i;
  vt<int> B(N);
  FOR(i, 0, N-1)
    B[(start+i)%N] = i;
  
  vt<int> ord(N);
  iota(all(ord), 0);
  sort(all(ord), [&](const int &a, const int &b) {
    return A[a] < A[b];    
  });
  
  vt<int> res;
  FOR(ii, 0, N-1) {
    int i = ord[ii];
    if (A[i] < N)
      continue;
    res.push_back(B[i]);
    B[i] = N + size(res) - 1;
    for (; B[i] < A[i]; B[i]++)
      res.push_back(B[i]);
  }
  
  FOR(i, 0, size(res)-1)
    ans[i] = res[i] + 1;
  return size(res);
}

constexpr int MOD = 1e9 + 9;
int binpow(int a, int b) {
  int ret = 1;
  for (; b; b >>= 1, a = 1ll * a * a % MOD)
    if (b & 1)
      ret = 1ll * ret * a % MOD;
  return ret;
}

int countReplacement(int N, int *A) {
  if (!valid(N, A))
    return 0;
  sort(A, A+N);
  int ans = 1;
  FOR(i, 0, N-1)
    if (A[i] >= N) {
      #ifdef DEBUG
      cout << "bruh: " << binpow(N - i, A[i] - (i ? max(N-1, A[i-1])+1 : N)) << ' ' << A[i] << ' ' << A[i-1] << '\n';
      #endif
      ans = 1ll * ans * binpow(N - i, A[i] - (i ? max(N-1, A[i-1])+1 : N)) % MOD;
    }
  return 1ll * ans * (A[0] >= N ? N : 1) % MOD;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 4 ms 604 KB Output is correct
7 Correct 7 ms 1628 KB Output is correct
8 Correct 8 ms 1336 KB Output is correct
9 Correct 3 ms 692 KB Output is correct
10 Correct 7 ms 1372 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 3 ms 604 KB Output is correct
7 Correct 7 ms 1628 KB Output is correct
8 Correct 6 ms 1372 KB Output is correct
9 Correct 2 ms 604 KB Output is correct
10 Correct 8 ms 1368 KB Output is correct
11 Incorrect 1 ms 348 KB Output isn't correct
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 600 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 8 ms 1372 KB Output is correct
12 Correct 10 ms 1372 KB Output is correct
13 Incorrect 12 ms 1496 KB Output isn't correct
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 352 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 11 ms 860 KB Output is correct
10 Correct 10 ms 1116 KB Output is correct
11 Correct 4 ms 564 KB Output is correct
12 Correct 6 ms 604 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 11 ms 800 KB Output is correct
10 Correct 10 ms 1116 KB Output is correct
11 Correct 4 ms 604 KB Output is correct
12 Correct 5 ms 604 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 14 ms 1884 KB Output is correct
15 Correct 16 ms 1928 KB Output is correct
16 Correct 4 ms 636 KB Output is correct
17 Correct 10 ms 1372 KB Output is correct
18 Correct 6 ms 860 KB Output is correct