제출 #418510

#제출 시각아이디문제언어결과실행 시간메모리
418510EncryptingWolfMechanical Doll (IOI18_doll)C++14
컴파일 에러
0 ms0 KiB
#include <vector> #include <iostream> #include <queue> #include <algorithm> typedef long long ll; #define FOR(i,x,y) for (ll i = x; i<y; i++) using namespace std; void create_circuit(int M, vector<int> A) { A.push_back(0); M += 1; vector<int> connections(M,0); connections[0] = A[0]; vector<pair<int,int>> switches; vector<vector<int>> follow(M); FOR(i, 0, A.size() - 1) { follow[A[i]].push_back(A[i + 1]); } int lowestSwitch = -1; FOR(i,1,M) { if (follow[i].size() == 1) { connections[i]=follow[i][0]; } else if (follow[i].size() ==0) { continue } else { connections[i] = lowestSwitch; switches.push_back({}); lowestSwitch--; int switchStart = lowestSwitch; int num = 1; while (num*2 < follow[i].size()) { int firstSwitch = switches.size() - num; FOR(j, firstSwitch, firstSwitch+num) { switches[j].first = lowestSwitch; switches[j].second = lowestSwitch-1; lowestSwitch -= 2; switches.push_back({}); switches.push_back({}); } num *= 2; } int firstSwitch = switches.size() - num; int outnum = num * 2; int z = 0; FOR(j, (firstSwitch*2), (firstSwitch + num)*2) { if (outnum > follow[i].size()) { if (j % 2 == 0) { switches[j / 2].first = switchStart; } if (j % 2 == 1) { switches[j / 2].second = switchStart; } } else { if (j % 2 == 0) { switches[j / 2].first = follow[i][z]; } if (j % 2 == 1) { switches[j / 2].second = follow[i][z]; } z++; } } } } vector<int> X, Y; FOR(i, 0, switches.size()) { X.push_back(switches[i].first); Y.push_back(switches[i].second); } answer(connections, X, Y); }

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

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:6:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   19 |  FOR(i, 0, A.size() - 1)
      |      ~~~~~~~~~~~~~~~~~~             
doll.cpp:19:2: note: in expansion of macro 'FOR'
   19 |  FOR(i, 0, A.size() - 1)
      |  ^~~
doll.cpp:33:12: error: expected ';' before '}' token
   33 |    continue
      |            ^
      |            ;
   34 |   }
      |   ~         
doll.cpp:42:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |    while (num*2 < follow[i].size())
      |           ~~~~~~^~~~~~~~~~~~~~~~~~
doll.cpp:61:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     if (outnum > follow[i].size())
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~
doll.cpp:6:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   88 |  FOR(i, 0, switches.size())
      |      ~~~~~~~~~~~~~~~~~~~~~          
doll.cpp:88:2: note: in expansion of macro 'FOR'
   88 |  FOR(i, 0, switches.size())
      |  ^~~
doll.cpp:95:2: error: 'answer' was not declared in this scope
   95 |  answer(connections, X, Y);
      |  ^~~~~~