제출 #702156

#제출 시각아이디문제언어결과실행 시간메모리
702156mychecksedadGondola (IOI14_gondola)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> // #include <gondola.h> using namespace std; #define ll long long ll MOD = 1000000009; ll po(ll a, ll b){ll res = 1; while(b){if(b&1) (res*=a)%=MOD; b>>=1; (a*=a)%=MOD;} return res;} int valid(int n, int a[]){ map<int, bool> m; for(int i = 0; i < n; ++i){ if(m[a[i]]){ return 0; } m[a[i]] = 1; } int mn = -1; for(int i = 0; i < n; ++i){ if(a[i] <= n){ mn = mn == -1 ? i : (a[mn] < a[i] ? mn : i); } } if(mn == -1) return 1; int s = a[mn]; bool ok = 1; for(int i = mn; i != mn || ok; (i += 1) %= n, s++){ if(s == n + 1) s = 1; ok = 0; if(a[i] <= n && a[i] != s){ return 0; } } return 1; } int replacement(int n, int a[], int r[]){ int l = 0, mn = -1; for(int i = 0; i < n; ++i){ if(a[i] <= n){ mn = mn == -1 ? i : (a[mn] < a[i] ? mn : i); } } int s; if(mn == -1) mn = 0, s = 1; else s = a[mn]; bool ok = 1; set<array<int, 2>> S; for(int i = mn; i != mn || ok; (i += 1) %= n, s++){ if(s == n + 1) s = 1; ok = 0; if(a[i] > n){ S.insert({a[i], i}); a[i] = s; } } for(int i = n + 1; !S.empty(); ){ auto v = *S.begin(); S.erase(S.begin()); while(i <= v[0]){ r[l] = a[v[1]]; a[v[1]] = i; l++; i++; } } return l; } int countReplacement(int n, int a[]){ if(valid(n, a) == 0){ return 0; } vector<ll> v; for(int i = 0; i < n; ++i){ if(a[i] > n) v.push_back(a[i]); } v.push_back(n); sort(v.begin(), v.end()); ll ans = 1; for(int i = 1; i < v.size(); ++i){ (ans *= po(v.size() - i, v[i] - v[i - 1] - 1)) %= MOD; // cout << v.size() - i << ' ' << v[i] - v[i - 1] - 1 << '\n'; } int mn = *min_element(a, a + n); return ans * (mn > n ? n : 1); }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:83:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |  for(int i = 1; i < v.size(); ++i){
      |                 ~~^~~~~~~~~~
/usr/bin/ld: /tmp/cctNBchW.o: in function `main':
grader.cpp:(.text.startup+0xb6): undefined reference to `valid'
/usr/bin/ld: grader.cpp:(.text.startup+0x108): undefined reference to `countReplacement'
/usr/bin/ld: grader.cpp:(.text.startup+0x132): undefined reference to `replacement'
collect2: error: ld returned 1 exit status