제출 #1064162

#제출 시각아이디문제언어결과실행 시간메모리
1064162damjandavkov곤돌라 (IOI14_gondola)C++17
100 / 100
17 ms6256 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int valid(int n, int v[]) { int i, x = -1, y; vector<bool> w(250000, 0); for (i = 0; i < n; i++) { v[i]--; if (w[v[i]]) return 0; w[v[i]] = 1; if (v[i] < n) { y = v[i] - i; if (y < 0) y += n; if (x == -1) x = y; if (x != y) return 0; } } return 1; } int replacement(int n, int v[], int rS[]) { int i, x = -1, y, t = n, j = 0; vector<bool> w(250000, 0); vector<vector<int> > in(n); for (i = 0; i < n; i++) { v[i]--; if (w[v[i]]) return 0; w[v[i]] = 1; if (v[i] < n) { y = v[i] - i; if (y < 0) y += n; if (x == -1) x = y; if (x != y) return 0; } } if (x == -1) x = 0; for (i = 0; i < n; i++) in[(i + x) % n] = {v[i], (i + x) % n}; sort(in.begin(), in.end()); for (i = 0; i < n; i++) { if (in[i][0] < n) continue; rS[j] = in[i][1] + 1; j++; t++; while (t <= in[i][0]) { rS[j] = t; j++; t++; } } return j; } ll r = 1000000009, p; ll po(ll a, int b) { if (!b) return 1; ll t = po(a, b / 2); t *= t; t %= r; if (b % 2) return t * a % r; return t; } int countReplacement(int n, int v[]) { int i, x = -1, y, t = n, m; vector<int> in; for (i = 0; i < n; i++) { v[i]--; if (v[i] < n) { y = v[i] - i; if (y < 0) y += n; if (x == -1) x = y; if (x != y) return 0; } else in.push_back(v[i]); } m = in.size(); sort(in.begin(), in.end()); if (m == n) p = n; else p = 1; for (i = 0; i < in.size(); i++) { if (in[i] < t) return 0; p *= po(m - i, in[i] - t); p %= r; t = in[i] + 1; } return p; }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:109:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  109 |     for (i = 0; i < in.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...