Submission #145105

#TimeUsernameProblemLanguageResultExecution timeMemory
145105emilemZagonetka (COI18_zagonetka)C++14
Compilation error
0 ms0 KiB
#include <algorithm> #include <iostream> #include <vector> #include <set> using namespace std; int n; vector<bool> used; vector<int> p; vector< vector<int> > nei; template<typename T> ostream& operator<<(ostream& ostr, const vector<T>& a) { for (int i = 1; i < a.size(); ++i) ostr << a[i] << ' '; return ostr; } void Dfs(int v, vector<int>& a) { used[v] = true; for (int i = 0; i < nei[v].size(); ++i) { int to = nei[v][i]; if (used[to]) continue; Dfs(to, a); } a.push_back(v); } bool Possible(int k) { vector<int> a; fill(used.begin(), used.end(), false); for (int v = 1; v <= n; ++v) if (p[v] <= k && !used[v]) Dfs(v, a); reverse(a.begin(), a.end()); vector<int> p1(p); int num = 1; for (int i = 0; i < a.size(); ++i) p[a[i]] = num++; cout << p1 << endl; int res; cin >> res; return res; } void Solve(int k) { if (k == 1) return; Solve(k - 1); int kInd = find(p.begin(), p.end(), k) - p.begin(); for (int i = 1; i <= n; ++i) if (p[i] < k) { nei[kInd].push_back(i); bool f = Possible(k); nei[kInd].pop_back(); if (!f) nei[i].push_back(kInd); } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> n; nei.resize(n + 1); p.resize(n + 1); used.resize(n + 1); for (int i = 1; i <= n; ++i) cin >> p[i]; Solve(n); vector<int> l, r; do { bool f = true; for (int v = 1; v <= n; ++v) for (int i = 0; i < nei[v].size(); ++i) { int to = nei[v][i]; if (ans[v] >= ans[to]) f = false; // cout << v << ' ' << to << endl; } if (f) { r = ans; if (l == vector<int>()) l = ans; } } while(next_permutation(ans.begin(), ans.end()); cout << l << '\n' << r << endl; char I; cin >> I; }

Compilation message (stderr)

zagonetka.cpp: In function 'void Dfs(int, std::vector<int>&)':
zagonetka.cpp:22:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < nei[v].size(); ++i)
                  ~~^~~~~~~~~~~~~~~
zagonetka.cpp: In function 'bool Possible(int)':
zagonetka.cpp:41:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < a.size(); ++i)
                  ~~^~~~~~~~~~
zagonetka.cpp: In function 'int main()':
zagonetka.cpp:79:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int i = 0; i < nei[v].size(); ++i)
                    ~~^~~~~~~~~~~~~~~
zagonetka.cpp:82:9: error: 'ans' was not declared in this scope
     if (ans[v] >= ans[to])
         ^~~
zagonetka.cpp:82:9: note: suggested alternative: 'abs'
     if (ans[v] >= ans[to])
         ^~~
         abs
zagonetka.cpp:89:8: error: 'ans' was not declared in this scope
    r = ans;
        ^~~
zagonetka.cpp:89:8: note: suggested alternative: 'abs'
    r = ans;
        ^~~
        abs
zagonetka.cpp:93:27: error: 'ans' was not declared in this scope
  } while(next_permutation(ans.begin(), ans.end());
                           ^~~
zagonetka.cpp:93:27: note: suggested alternative: 'abs'
  } while(next_permutation(ans.begin(), ans.end());
                           ^~~
                           abs
zagonetka.cpp:93:50: error: expected ')' before ';' token
  } while(next_permutation(ans.begin(), ans.end());
                                                  ^
zagonetka.cpp: In instantiation of 'std::ostream& operator<<(std::ostream&, const std::vector<T>&) [with T = int; std::ostream = std::basic_ostream<char>]':
zagonetka.cpp:43:10:   required from here
zagonetka.cpp:15:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i < a.size(); ++i)