Submission #1031558

#TimeUsernameProblemLanguageResultExecution timeMemory
1031558aaaaaarrozBeech Tree (IOI23_beechtree)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; vector<int> padre; vector<int>sum; vector<int>cc; bool orden(int x, int y){ if (sum[cc[x]].size() != sum[cc[y]].size()) return sum[cc[x]] < sum[cc[y]]; return x > y; } vector<int> beechtree(int n, int m, vector<int>P, vector<int>C){ vector<vector<int>> graph(n,vector<int>()); padre = P; sum.resize(m,0); sum[C[0]]++; cc=C; for(int i = 1; i < n; i++){ graph[P[i]].push_back(i); sum[C[i]]++; } vector<int> ans(n, 0); for(int i = 0; i < n; i++){ vector<int> sub; priority_queue<int,vector<int>,greater<int>> pila; pila.push(i); while(!pila.empty()){ int nodo = pila.top(); pila.pop(); sub.push_back(nodo); for(int vecino : graph[nodo]){ pila.push(vecino); } } if(sub.size() == 1){ ans[i] = 1; continue; } sort(sub.begin()+1, sub.end(),orden); bool bien = true; map<int, int> repeticiones; for(int j = 1; j < sub.size(); j++){ int color = C[sub[j]]; if(repeticiones.find(color) == repeticiones.end()){ repeticiones[color] = 0; } int expected_parent = sub[repeticiones[color]]; if(P[sub[j]] != expected_parent){ bien = false; break; } repeticiones[color]++; } if(bien){ ans[i] = 1; } } return ans; }

Compilation message (stderr)

beechtree.cpp: In function 'bool orden(int, int)':
beechtree.cpp:7:17: error: request for member 'size' in 'sum.std::vector<int>::operator[](((std::vector<int>::size_type)cc.std::vector<int>::operator[](((std::vector<int>::size_type)x))))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
    7 |  if (sum[cc[x]].size() != sum[cc[y]].size())
      |                 ^~~~
beechtree.cpp:7:38: error: request for member 'size' in 'sum.std::vector<int>::operator[](((std::vector<int>::size_type)cc.std::vector<int>::operator[](((std::vector<int>::size_type)y))))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
    7 |  if (sum[cc[x]].size() != sum[cc[y]].size())
      |                                      ^~~~
beechtree.cpp: In function 'std::vector<int> beechtree(int, int, std::vector<int>, std::vector<int>)':
beechtree.cpp:41:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |   for(int j = 1; j < sub.size(); j++){
      |                  ~~^~~~~~~~~~~~