Submission #463958

#TimeUsernameProblemLanguageResultExecution timeMemory
463958blueCat in a tree (BOI17_catinatree)C++17
100 / 100
269 ms220996 KiB
#include <iostream> #include <deque> using namespace std;int N,D,x,q=0;deque<int> c[200'000]; deque<int> d(int u){ deque<int> q(1,1); for(int v:c[u]) { auto a=d(v); if(q.size()<a.size()) swap(q,a); for(int i=0;i<a.size();i++)q[i]=max(q[i],max(a[i]+(D-i<q.size()?q[max(D-i,i)]:0),q[i]+(D-i<a.size()?a[max(D-i,i)]:0))); for(int i=a.size();i>=0;i--) if(i+1<q.size()) q[i]=max(q[i],q[i+1]);} q.push_front(q.front());return q;} int main(){ cin>>N>>D;for(int i=1;i<N;i++){cin>>x;c[x].push_back(i);} for(int r:d(0))q=max(q,r);cout<<q<<'\n';}

Compilation message (stderr)

catinatree.cpp: In function 'std::deque<int> d(int)':
catinatree.cpp:8:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |         for(int i=0;i<a.size();i++)q[i]=max(q[i],max(a[i]+(D-i<q.size()?q[max(D-i,i)]:0),q[i]+(D-i<a.size()?a[max(D-i,i)]:0)));
      |                     ~^~~~~~~~~
catinatree.cpp:8:63: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |         for(int i=0;i<a.size();i++)q[i]=max(q[i],max(a[i]+(D-i<q.size()?q[max(D-i,i)]:0),q[i]+(D-i<a.size()?a[max(D-i,i)]:0)));
      |                                                            ~~~^~~~~~~~~
catinatree.cpp:8:99: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |         for(int i=0;i<a.size();i++)q[i]=max(q[i],max(a[i]+(D-i<q.size()?q[max(D-i,i)]:0),q[i]+(D-i<a.size()?a[max(D-i,i)]:0)));
      |                                                                                                ~~~^~~~~~~~~
catinatree.cpp:9:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |         for(int i=a.size();i>=0;i--) if(i+1<q.size()) q[i]=max(q[i],q[i+1]);}
      |                                         ~~~^~~~~~~~~
catinatree.cpp: In function 'int main()':
catinatree.cpp:13:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   13 |     for(int r:d(0))q=max(q,r);cout<<q<<'\n';}
      |     ^~~
catinatree.cpp:13:31: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   13 |     for(int r:d(0))q=max(q,r);cout<<q<<'\n';}
      |                               ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...