제출 #375449

#제출 시각아이디문제언어결과실행 시간메모리
375449SeanliuMeetings (JOI19_meetings)C++17
29 / 100
2540 ms1908 KiB
#include "meetings.h" #include <iostream> #include <unordered_map> #include <algorithm> #include <vector> using namespace std; const int maxN = 2e3 + 326; vector<int> adj[maxN]; void addEdge(int a, int b){ //cout << "Adding: " << a << ", " << b << endl; if(a > b) Bridge(b, a); else Bridge(a, b); } void solve(vector<int> vec){ if(vec.size() == 1) return; if(vec.size() == 2){ addEdge(vec[0], vec[1]); return; } //cout << "vec = "; for(int x : vec) cout << x << " "; cout << endl; unordered_map<int, vector<int>> mp; vector<int> nv = vector<int>(); mp[vec[1]] = mp[vec[0]] = vector<int>(); mp[vec[0]].push_back(vec[0]); mp[vec[1]].push_back(vec[1]); for(int i = 2; i < vec.size(); i++){ int res = Query(vec[0], vec[1], vec[i]); if(!mp.count(res)) mp[res] = vector<int>(); mp[res].push_back(vec[i]); } for(auto [x, v] : mp){ //cout << "x = " << x << ", v = "; for(int y : v) cout << y << " "; cout << endl; solve(v); if(x != vec[0] && x != vec[1]) nv.push_back(x); } sort(nv.begin(), nv.end(), [&](int a, int b){ return Query(vec[0], a, b) == a; }); //cout << "OK\n"; //cout << "nv = " << nv.size() << ", vec: " << vec.size() << endl; if(nv.size()){ for(int i = 0; i < nv.size() - 1; i++) addEdge(nv[i], nv[i + 1]); addEdge(vec[0], nv[0]); addEdge(vec[1], nv[nv.size() - 1]); } else addEdge(vec[0], vec[1]); } void Solve(int N){ vector<int> jizz = vector<int>(); for(int i = 0; i < N; i++) jizz.push_back(i); solve(jizz); }

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

meetings.cpp: In function 'void solve(std::vector<int>)':
meetings.cpp:29:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  for(int i = 2; i < vec.size(); i++){
      |                 ~~^~~~~~~~~~~~
meetings.cpp:45:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |   for(int i = 0; i < nv.size() - 1; i++) addEdge(nv[i], nv[i + 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...