3562. Maximum Profit from Trading Stocks with Discounts

You are given an integer n, representing the number of employees in a company. Each employee is assigned a unique ID from 1 to n, and employee 1 is the CEO. You are given two 1-based integer arrays, present and future, each of length n, where: present[i] represents the current price at which the ith employee can buy a stock today. future[i] represents the expected price at which the ith employee can sell the stock tomorrow. The company's hierarchy is represented by a 2D integer array hierarchy, where hierarchy[i] = [ui, vi] means that employee ui is the direct boss of employee vi. Additionally, you have an integer budget representing the total funds available for investment. However, the company has a discount policy: if an employee's direct boss purchases their own stock, then the employee can buy their stock at half the original price (floor(present[v] / 2)). Return the maximum profit that can be achieved without exceeding the given budget. Note: You may buy each stock at most once. You cannot use any profit earned from future stock prices to fund additional investments and must buy only from budget.
/**
 * @param {number} n
 * @param {number[]} present
 * @param {number[]} future
 * @param {number[][]} hierarchy
 * @param {number} budget
 * @return {number}
 */
var maxProfit = function(n, present, future, hierarchy, budget) {
  const employeeCount = n;
  const budgetLimit = budget;
  const budgetStride = budgetLimit + 1;

  // Sentinel value for unreachable DP states
  const MIN_PROFIT = -1_000_000_000;

  // Price arrays (1-indexed by employee ID for convenience)
  const presentPrice = new

ECODROP - update_so_bal_edit

salesorderID = salesorder.get("salesorder_id");
organizationID = organization.get("organization_id");
invTot = 0.0;
resp = zoho.books.getRecordsByID("Salesorders",organizationID,salesorderID).get("salesorder");
for each  invoice in resp.get("invoices")
{
	invTot = invTot + invoice.toMap().get("total");
}
balance = salesorder.get("total").toDecimal() - invTot;
updateMap = Map();
updateMap.put("custom_fields",{{"customfield_id":"337859000000099002","value":balance}});
zoho.books.updateR

ECODROP - update_so_bal_create

salesorderID = salesorder.get("salesorder_id");
organizationID = organization.get("organization_id");
updateMap = Map();
updateMap.put("custom_fields",{{"customfield_id":"337859000000099002","value":salesorder.get("total")}});
info zoho.books.updateRecord("Salesorders",organizationID,salesorderID,updateMap);

ECODROP - SO-Books to CRM

void invokeCRMFunction(int custID)
{
organizationID = "20085137075";
contactResp = zoho.books.getRecordsByID("Contacts",organizationID,custID,"books").get("contact");
zcrmID = contactResp.toMap().get("zcrm_account_id");
paramMap = Map();
paramMap.put("crmID",zcrmID);
paramMap.put("booksCustID",custID);
// info zcrmID;
resp = invokeurl
[
	url :"https://www.zohoapis.eu/crm/v2/functions/update_account_pending_amount/actions/execute?auth_type=apikey&zapikey=1003.05128f2623f44bb2f32c77a730

ECODROP - Invoice Books to CRM

void invokeCRMFunction(int custID)
{
organizationID = "20085137075";
contactResp = zoho.books.getRecordsByID("Contacts",organizationID,custID,"books").get("contact");
zcrmID = contactResp.toMap().get("zcrm_account_id");
paramMap = Map();
paramMap.put("crmID",zcrmID);
paramMap.put("booksCustID",custID);
// info zcrmID;
resp = invokeurl
[
	url :"https://www.zohoapis.eu/crm/v2/functions/update_account_pending_amount/actions/execute?auth_type=apikey&zapikey=1003.05128f2623f44bb2f32c77a730

ECODROP - Génération lien Google Maps

/*
	Function Name : Generate_Google_Maps_URL
	InputArguments : 
		oppID ( Deal ID)
		addresse
		codePostal
		ville
	Description: This function generate a Google Maps link
	Created On : 24/11/2022
	Tested and deployed by: Léonard
*/
lienGoogle = "https://www.google.fr/maps/place/" + ifnull(addresse,"") + "," + ifnull(codePostal,"") + "," + ifnull(ville,"");
updateDeal = Map();
updateDeal.put("Lien_adresse_du_chantier",lienGoogle);
updateResp = zoho.crm.updateRecord("Deals",oppID,upd

ECODROP - Generate Payment Link

/*
Function Name: Generate Payment Link
Input Arguments:String total,String devisNo
*/
orgId = "20085137075";
resp = invokeurl
[
	url :"https://books.zoho.eu/api/v3/estimates"
	type :GET
	parameters:{"search_text":devisNo}
	connection:"booksapi"
];
if(resp.get("estimates").size() == 1)
{
	estimateMap = resp.get("estimates").get(0).toMap();
	estimateID = estimateMap.get("estimate_id");
	booksCustID = estimateMap.get("customer_id");
	paymentAmount = total.toDecimal();
	/*paymentA

ECODROP - Deal Name Standardizer

/*
Function Name :Deal Name Standardizer
Input Arguments :int dealID,String oppNo,String accountName,String codePostal,String ville,String address,String firstName,String lastName
*/
if(accountName != null && accountName != "")
{
	dealName = oppNo + "-" + accountName + "-" + ifnull(codePostal,"") + "-" + ifnull(ville,"") + "-" + ifnull(address,"");
}
else if(lastName != null && lastName != "")
{
	dealName = oppNo + "-" + firstName + " " + lastName + "-" + ifnull(codePostal,"") + "-" + 

ECODROP - Créer lien de paiement

orgID = "20085137075";
paymentMap = Map();
paymentMap.put("customer_id",337859000000049093);
paymentMap.put("payment_amount",1000.00);
paymentMap.put("description","Test");
paymentMap.put("expiry_time","2023-01-01");
dataList = List();
dataList.addAll(paymentMap.toList());
paymentResp = invokeurl
[
	url :"https://books.zoho.eu/api/v3/paymentlinks?organization_id=" + orgID
	type :POST
	parameters:dataList + ""
	connection:"booksapi"
];
info paymentResp.get("payment_link").get("url"

ECODROP - Création enregistrements formulaire

/*
	Function Name : Create_form_records
	InputArguments : 
		formID ( Formulaire ID)
	Description: This function create records based on form received and best logical to don't create duplicates
	Created On : 29/11/2022
	Tested and deployed by: Léonard
*/
dealMap = Map();
idf = {"75","77","78","91","92","93","94","95"};
formRecord = zoho.crm.getRecordById("Formulaires",formID,Map(),"crmapi");
dealMap.put("Deal_Name","Demande formulaire");
dealMap.put("Type_de_besoin",formRecord.get("

ECODROP - Changement de pipeline

/*
	Function Name : Change_pipeline
	InputArguments : 
		oppID ( Deal ID)
	Description: This function change Pipeline and stage to "Demande de prix"
	Created On : 06/12/2022
	Tested and deployed by: Léonard
*/
opportunite = zoho.crm.getRecordById("Deals",oppID,Map(),"crmapi");
if(opportunite.get("Stage") == "Potentiel")
{
	dealMap = Map();
	dealMap.put("id",oppID);
	dealMap.put("Pipeline","Demande de prix log");
	dealMap.put("Stage","Demande de prix");
	// MAJ de l'opportunité par

Liquid, Section - Tabs-component with accordion from metaobject

{{ 'tabs-component.css' | asset_url | stylesheet_tag }}
{{ 'component-accordion.css' | asset_url | stylesheet_tag }}
{{ 'main-faq.css' | asset_url | stylesheet_tag }}

{%- style -%}
  .section-{{ section.id }}-padding {
  padding-top: {{ section.settings.padding_top | times: 0.75 | round: 0 }}px;
  }

  .section-{{ section.id }}-padding {
  padding-bottom: {{ section.settings.padding_bottom | times: 0.75 | round: 0 }}px;
  }

  @media screen and (min-width: 750px) {
  .section-{{ s

Python Packaging Fundamentals

# Python Packaging Fundamentals: Complete Course

## Table of Contents
1. Core Concepts
2. Package Structure
3. Virtual Environments
4. Entry Points and CLI Tools
5. Dependencies Management
6. Distribution and Publishing
7. Best Practices

---

## 1. Core Concepts

### What is a Python Package?

A **package** is a directory containing Python modules and a special `__init__.py` file. This file (even if empty) tells Python "this directory is a package that can be imported."

**Example:**
```
mypac

git chrrypick

# git cherrypick

git cherry-pick <commit-id>

UV - Different Builders

-----

# Comprendre le Système de Build Python avec UV

Ce document synthétise le rôle du fichier `pyproject.toml` dans la construction d'un paquet, et la distinction entre les moteurs de build (backends) utilisés par `uv`.

## 1\. Le Rôle du `[build-system]`

Dans le fichier `pyproject.toml`, la section `[build-system]` est le cœur de la machinerie (standard PEP 517). Elle répond à la question : **"Quel outil doit transformer ce code source en paquet installable (Wheel) ?"**

```toml
[build-sys

PageSpeed, JS - head scripts

eval(function(e,t,n,a,r,o){if(r=function(e){return(e<t?"":r(parseInt(e/t)))+(35<(e%=t)?String.fromCharCode(e+29):e.toString(36))},!"".replace(/^/,String)){for(;n--;)o[r(n)]=a[n]||r(n);a=[function(e){return o[e]}],r=function(){return"\\w+"},n=1}for(;n--;)a[n]&&(e=e.replace(new RegExp("\\b"+r(n)+"\\b","g"),a[n]));return e}('l(r.O=="P y"){i j=[],s=[];u Q(a,b=R){S c;T(...d)=>{U(c),c=V(()=>a.W(X,d),b)}}2.m="Y"+(2.z||"")+"Z";2.A="10"+(2.z||"")+"11";12{i a=r[2.m],e=r[2.A];2.k=(e.B(\'y\')>-1&&a.B(\'13\'