Submission #418545

#TimeUsernameProblemLanguageResultExecution timeMemory
418545EncryptingWolfMechanical Doll (IOI18_doll)C++14
Compilation error
0 ms0 KiB
#include <vector> #include "doll.h" #include <iostream> #include <queue> #include <algorithm> #include <cmath> typedef long long ll; #define FOR(i,x,y) for (ll i = x; i<y; i++) using namespace std; long long reverse(long long a, long long num) { long long p = long long(log2(num) + 0.001); ll r=0; FOR(i, 0, p) { if ((a >> i) & 1) { r +=( 1 << (p - i-1)); } } return r; } 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(k, 0, outnum) { int j = reverse(k, outnum)+ (firstSwitch * 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); }

Compilation message (stderr)

doll.cpp: In function 'long long int reverse(long long int, long long int)':
doll.cpp:14:16: error: expected primary-expression before 'long'
   14 |  long long p = long long(log2(num) + 0.001);
      |                ^~~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:8: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]
    8 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   34 |  FOR(i, 0, A.size() - 1)
      |      ~~~~~~~~~~~~~~~~~~             
doll.cpp:34:2: note: in expansion of macro 'FOR'
   34 |  FOR(i, 0, A.size() - 1)
      |  ^~~
doll.cpp:57:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |    while (num*2 < follow[i].size())
      |           ~~~~~~^~~~~~~~~~~~~~~~~~
doll.cpp:77:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |     if (outnum > follow[i].size())
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~
doll.cpp:8: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]
    8 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
  104 |  FOR(i, 0, switches.size())
      |      ~~~~~~~~~~~~~~~~~~~~~          
doll.cpp:104:2: note: in expansion of macro 'FOR'
  104 |  FOR(i, 0, switches.size())
      |  ^~~