제출 #106566

#제출 시각아이디문제언어결과실행 시간메모리
106566tictaccat통행료 (IOI18_highway)C++14
12 / 100
206 ms7812 KiB
#include "highway.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int N,A,B,M,depthT; vector<vector<pair<int,int>>> adj; vector<pair<int,int>> pos; void dfs(int u, int depth, int p) { // cout << u << " " << pos.size() << "\n"; for (auto e: adj[u]) { int v,k; tie(v,k) = e; if (v == p) continue; if (depth+1 == depthT) pos.push_back(e); else dfs(v,depth+1,u); } } void find_pair(int tempN, std::vector<int> U, std::vector<int> V, int tempA, int tempB) { N = tempN; A = tempA; B = tempB; M = U.size(); adj.resize(N); for (int i = 0; i < M; i++) { adj[U[i]].push_back(make_pair(V[i],i)); adj[V[i]].push_back(make_pair(U[i],i)); } vector<int> w(M,0); depthT = ask(w)/A; dfs(0,0,-1); while (pos.size() > 1) { int mid = pos.size()/2; for (int i = 0; i < mid; i++) w[pos[i].second] = 0; for (int i = mid; i < pos.size(); i++) w[pos[i].second] = 1; if (ask(w) == (ll)depthT*A) { pos.erase(pos.begin()+mid,pos.end()); } else { pos.erase(pos.begin(),pos.begin()+mid); } } //cout << pos[0].first << "\n"; answer(0, pos[0].first); }

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

highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:39:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = mid; i < pos.size(); i++) w[pos[i].second] = 1;
                       ~~^~~~~~~~~~~~
#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...