Only Premium Users can view the Question
WATERING PLANTS
#include <bits/stdc++.h>
 #include <algorithm>
 #include <stack>
 using namespace std;
 #define pb push_back
 #define ll long long int
 #define MAXN 1000001
 #define MOD 1000000007
 int main() {
 //    int t;
 //    cin>>t;
 //    while(t--)
 //    {}
     int n;
     cin >> n;
     int c;
     cin >> c;
     vector<int> a(n);
     int ans = 0;
     for (int i = 0; i < n; i++)
     {
         cin >> a[i];
     }
     int i = 0, cur = c;
     while (i < n)
     {
         ans++;
         if (cur > a[i])
         {
             cur -= a[i];
         }
         else
         {
             int num = ceil(a[i] / (1.0 * c));
             ans += (i + i  + ((num - 1) * (i + 1) * 2));
             if ((a[i] % c) != 0)cur = (c - (a[i] % c));
             else cur = 0;
         }
         i++;
     }
     cout << ans  << endl;
     return 0;
 }
MEMORY DISTRIBUTION:-https://www.hackerearth.com/practice/algorithms/dynamic-programming/introduction-to-dynamic-programming-1/practice-problems/algorithm/memory-distribution-39b62752/
#include<bits/stdc++.h>
using namespace std;
void solve(int n,int sum,vector<int>&v,int temp,int &ans,int blocks,bool &flag){
if(temp>sum )return ;
if(temp==sum){
ans=max(ans,blocks);
flag=true;
return ;
}
for(int i=0;i<n;i++){
solve(n,sum,v,temp+v[i],ans,blocks+1,flag);
if(flag) return;
}
return ;
}
int Memory (int N, int A, int B, int C) {
vector<int>v;
v.push_back(A);
v.push_back(B);
v.push_back(C);
sort(v.begin(),v.end());
int ans=0,blocks=0;
bool flag=false;
solve(3,N,v,0,ans,blocks,flag);
return ans;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
int A;
cin >> A;
int B;
cin >> B;
int C;
cin >> C;
int out_;
out_ = Memory(N, A, B, C);
cout << out_;
}