제출 #58383

#제출 시각아이디문제언어결과실행 시간메모리
58383aome곤돌라 (IOI14_gondola)C++17
60 / 100
91 ms4884 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]) { map<int, int> mp; for (int i = 0; i < n; ++i) { if (mp[inputSeq[i]]) return 0; mp[inputSeq[i]] = 1; } int pos = -1; for (int i = 0; i < n; ++i) { if (inputSeq[i] <= n) pos = i; } if (pos == -1) return 1; for (int i = 0; i < n; ++i) { if (inputSeq[i] <= n && inputSeq[i] != (inputSeq[pos] - 1 + i - pos + n) % n + 1) return 0; } return 1; } //---------------------- int arr[100005]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int pos = -1; int start = -1; vector< pair<int, int> > vec; for (int i = 0; i < n; ++i) { if (gondolaSeq[i] <= n) pos = i, start = gondolaSeq[i]; } if (pos == -1) pos = 0, start = 1; for (int i = 0; i < n; ++i) { arr[(i + pos) % n] = (start - 1 + i) % n + 1; } for (int i = 0; i < n; ++i) { if (gondolaSeq[i] > n) vec.push_back({gondolaSeq[i], arr[i]}); } sort(vec.begin(), vec.end()); int sz = 0; for (int i = 0; i < vec.size(); ++i) { int tmp = (i > 0 ? vec[i - 1].first + 1 : n + 1); replacementSeq[sz++] = vec[i].second; for (int j = tmp; j < vec[i].first; ++j) { replacementSeq[sz++] = j; } } return sz; } //---------------------- const int mod = 1e9 + 9; int binPow(int x, int y) { if (!y) return 1; int ret = binPow(x, y >> 1); ret = 1LL * ret * ret % mod; if (y & 1) ret = 1LL * ret * x % mod; return ret; } int countReplacement(int n, int inputSeq[]) { if (!valid(n, inputSeq)) return 0; int res = 1; vector<int> vec; for (int i = 0; i < n; ++i) { if (inputSeq[i] > n) vec.push_back(inputSeq[i]); } sort(vec.begin(), vec.end()); for (int i = 0; i < vec.size(); ++i) { int tmp = (i > 0 ? vec[i - 1] : n + 1); res = 1LL * res * binPow(vec.size() - i, vec[i] - tmp) % mod; } return res; }

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:44:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < vec.size(); ++i) {
                  ~~^~~~~~~~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:74:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < vec.size(); ++i) {
                  ~~^~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...