제출 #469711

#제출 시각아이디문제언어결과실행 시간메모리
469711blueCat in a tree (BOI17_catinatree)C++17
100 / 100
300 ms264404 KiB
#include <bits/stdc++.h> #define z size() #define f(i,a,b) for(i=a;i<b;i++) using namespace std;int N,D,x,q,i;deque<int>c[1<<18]; deque<int>d(int u){deque<int>q(1,1);for(int v:c[u]){auto a=d(v);if(q.z<a.z)swap(q,a);f(i,0,a.z)q[i]=max(q[i],max(a[i]+(D-i<q.z?q[max(D-i,i)]:0),q[i]+(D-i<a.z?a[max(D-i,i)]:0)));for(i=a.z;i>=0;i--)if(i+1<q.z)q[i]=max(q[i],q[i+1]);}q.push_front(q.front());return q;} int main(){cin>>N>>D;f(i,1,N){cin>>x;c[x].push_back(i);}for(int r:d(0))q=max(q,r);cout<<q<<'\n';}

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

catinatree.cpp: In function 'std::deque<int> d(int)':
catinatree.cpp:3:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    3 | #define f(i,a,b) for(i=a;i<b;i++)
      |                           ^
catinatree.cpp:5:86: note: in expansion of macro 'f'
    5 | deque<int>d(int u){deque<int>q(1,1);for(int v:c[u]){auto a=d(v);if(q.z<a.z)swap(q,a);f(i,0,a.z)q[i]=max(q[i],max(a[i]+(D-i<q.z?q[max(D-i,i)]:0),q[i]+(D-i<a.z?a[max(D-i,i)]:0)));for(i=a.z;i>=0;i--)if(i+1<q.z)q[i]=max(q[i],q[i+1]);}q.push_front(q.front());return q;}
      |                                                                                      ^
catinatree.cpp:5:123: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | deque<int>d(int u){deque<int>q(1,1);for(int v:c[u]){auto a=d(v);if(q.z<a.z)swap(q,a);f(i,0,a.z)q[i]=max(q[i],max(a[i]+(D-i<q.z?q[max(D-i,i)]:0),q[i]+(D-i<a.z?a[max(D-i,i)]:0)));for(i=a.z;i>=0;i--)if(i+1<q.z)q[i]=max(q[i],q[i+1]);}q.push_front(q.front());return q;}
      |                                                                                                                           ^
catinatree.cpp:5:154: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | deque<int>d(int u){deque<int>q(1,1);for(int v:c[u]){auto a=d(v);if(q.z<a.z)swap(q,a);f(i,0,a.z)q[i]=max(q[i],max(a[i]+(D-i<q.z?q[max(D-i,i)]:0),q[i]+(D-i<a.z?a[max(D-i,i)]:0)));for(i=a.z;i>=0;i--)if(i+1<q.z)q[i]=max(q[i],q[i+1]);}q.push_front(q.front());return q;}
      |                                                                                                                                                          ^
catinatree.cpp:5:203: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | deque<int>d(int u){deque<int>q(1,1);for(int v:c[u]){auto a=d(v);if(q.z<a.z)swap(q,a);f(i,0,a.z)q[i]=max(q[i],max(a[i]+(D-i<q.z?q[max(D-i,i)]:0),q[i]+(D-i<a.z?a[max(D-i,i)]:0)));for(i=a.z;i>=0;i--)if(i+1<q.z)q[i]=max(q[i],q[i+1]);}q.push_front(q.front());return q;}
      |                                                                                                                                                                                                           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...