➤ Problem Link : 4B. Before an Exam
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; void printRec(int d,int arr[][500],int sum) { if(d==1) { cout<<arr[d][sum]<<" "; return; } printRec(d-1,arr,sum-arr[d][sum]); cout<<arr[d][sum]<<" "; } int main() { int d,sum; cin>>d>>sum; bool dp[d+1][sum+1]; int val[d+1][500]; memset(dp,0,sizeof(dp)); memset(val,0,sizeof(val)); pair<int,int> arr[d+1]; for(int i=1;i<=d;i++) cin>>arr[i].first>>arr[i].second; for(int i=arr[1].first;i<=arr[1].second;i++) { dp[1][i]=1; val[1][i]=i; } for(int i=2;i<=d;i++) { for(int j=0;j<=sum;j++) { for(int k=arr[i].first;k<=arr[i].second;k++) { if(k<=j && dp[i-1][j-k]) { dp[i][j]=1; val[i][j]=k; break; } } } } if(!dp[d][sum]) cout<<"NO"; else { cout<<"YES\n"; printRec(d,val,sum); } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!