4B. Before an Exam - Codeforces Solution C++

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