➤ 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!!
