답안 #1025359

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1025359 2024-07-17T00:08:39 Z HappyCapybara 곤돌라 (IOI14_gondola) C++17
100 / 100
40 ms 6784 KB
#include "gondola.h"
#include<bits/stdc++.h>
using namespace std;

int valid(int n, int inputSeq[]){
  int x = -1;
  unordered_set<int> s;
  for (int i=0; i<n; i++){
    if (s.find(inputSeq[i]) != s.end()) return 0;
    s.insert(inputSeq[i]);
    if (inputSeq[i] <= n){
      if (x != -1 && x != inputSeq[i]) return 0;
      if (x == -1) x = inputSeq[i];
    }
    if (x != -1) x = (x % n) + 1;
  }
  return 1;
}

int replacement(int n, int gondolaSeq[], int replacementSeq[]){
  vector<int> v(n);
  int x = -1;
  for (int i=0; i<2*n; i++){
    if (x != -1){
      v[x] = gondolaSeq[i%n];
      x = (x+1) % n;
    }
    else {
      if (i == n){
        v[0] = gondolaSeq[i%n];
        x = 1;
      }
      else if (gondolaSeq[i] <= n) x = gondolaSeq[i] % n;
    }
  }
  vector<pair<int,int>> w(n);
  for (int i=0; i<n; i++) w[i] = {v[i], i+1};
  sort(w.begin(), w.end());
  int cur = 0, last = n;
  for (int i=0; i<n; i++){
    if (w[i].first == w[i].second) continue;
    else {
      replacementSeq[cur] = w[i].second;
      cur++;
      last++;
      while (last != w[i].first){
        replacementSeq[cur] = last;
        cur++;
        last++;
      }
    }
  }
  return cur;
}

unordered_map<long long, long long> m;

long long pwr(int b, int x){
  if (x == 0) return 1;
  if (x == 1) return b;
  if (m[b+x*200000] != 0) return m[b+x*200000];
  return m[b+x*200000] = (pwr(b, x/2)*pwr(b, x-x/2)) % 1000000009;
}

int countReplacement(int n, int inputSeq[]){
  if (!valid(n, inputSeq)) return 0;
  int x = 0;
  priority_queue<int> pq;
  for (int i=0; i<n; i++){
    if (inputSeq[i] > n){
      pq.push(-inputSeq[i]);
      x++;
    }
  }
  long long res = 1;
  if (x == n) res = n;
  int cur = n+1;
  while (!pq.empty()){
    res = (res*pwr(x, -pq.top()-cur)) % 1000000009;
    cur = -pq.top()+1;
    pq.pop();
    x--;
  }
  return res;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 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
# 결과 실행 시간 메모리 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 5 ms 2228 KB Output is correct
7 Correct 6 ms 1116 KB Output is correct
8 Correct 8 ms 4024 KB Output is correct
9 Correct 4 ms 1632 KB Output is correct
10 Correct 10 ms 4396 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 1 ms 348 KB Output is correct
6 Correct 5 ms 2196 KB Output is correct
7 Correct 6 ms 1116 KB Output is correct
8 Correct 8 ms 3948 KB Output is correct
9 Correct 3 ms 1628 KB Output is correct
10 Correct 10 ms 4420 KB Output is correct
11 Correct 0 ms 444 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 3 ms 604 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 13 ms 1080 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 360 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 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 444 KB Output is correct
4 Correct 1 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 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 1 ms 348 KB Output is correct
2 Correct 0 ms 416 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 344 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
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 7 ms 2140 KB Output is correct
12 Correct 9 ms 2136 KB Output is correct
13 Correct 9 ms 1476 KB Output is correct
14 Correct 7 ms 1884 KB Output is correct
15 Correct 12 ms 2264 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 444 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 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 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 344 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 20 ms 4056 KB Output is correct
10 Correct 16 ms 3432 KB Output is correct
11 Correct 8 ms 1900 KB Output is correct
12 Correct 9 ms 1980 KB Output is correct
13 Correct 3 ms 860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 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 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
9 Correct 20 ms 3948 KB Output is correct
10 Correct 16 ms 3436 KB Output is correct
11 Correct 8 ms 1876 KB Output is correct
12 Correct 11 ms 1900 KB Output is correct
13 Correct 2 ms 860 KB Output is correct
14 Correct 33 ms 6604 KB Output is correct
15 Correct 40 ms 6784 KB Output is correct
16 Correct 6 ms 1464 KB Output is correct
17 Correct 26 ms 4560 KB Output is correct
18 Correct 14 ms 2668 KB Output is correct