제출 #442878

#제출 시각아이디문제언어결과실행 시간메모리
442878jesus_coconutTeleporters (IOI08_teleporters)C++17
90 / 100
1057 ms64416 KiB
#include <bits/stdc++.h> #define all(a) begin(a), end(a) #define S second #define F first using namespace std; void cc(vector<pair<int, int>> &v) { vector<int> tmp; for (auto &[a, b] : v) { tmp.push_back(a); tmp.push_back(b); } sort(all(tmp)); tmp.erase(unique(all(tmp)), end(tmp)); for (auto &[a, b] : v) { a = lower_bound(all(tmp), a) - begin(tmp); b = lower_bound(all(tmp), b) - begin(tmp); } } int const N = 1000005; vector<bool> bio; vector<int> len; vector<int> nxt; void findcyc(int ver, int l, int tar) { bio[ver] = true; if (ver == tar) { len.push_back(l); return; } findcyc(nxt[ver], l + 1, tar); } void solve() { int n, m; cin >> n >> m; bio.resize(2 * n); nxt.resize(2 * n); vector<pair<int, int>> v; for (int i = 0; i < n; ++i) { int a, b; cin >> a >> b; v.emplace_back(a, b); v.emplace_back(b, a); } sort(all(v)); cc(v); for (int i = 0; i < 2 * n; ++i) { nxt[i] = (v[i].S + 1) % (2 * n); } for (int i = 0; i < 2 * n; ++i) { if (!bio[nxt[i]]) { findcyc(nxt[i], 1, i); } } sort(begin(len) + 1, end(len), greater<>()); int ans = len[0]; int i = 1; for (; i <= m && i < len.size(); ++i) { if (len[i] > 0) { ans += len[i] + 2; } else break; } int lft = m + 1 - i; if (lft % 2 == 1) { lft--; ans++; } ans += 2 * lft; cout << ans << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; }

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

teleporters.cpp: In function 'void solve()':
teleporters.cpp:60:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |  for (; i <= m && i < len.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...
#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...