Heim > Backend-Entwicklung > C++ > C++-Programm, um den Mindestbetrag zu ermitteln, der zum Abonnieren eines OTT-Dienstes erforderlich ist

C++-Programm, um den Mindestbetrag zu ermitteln, der zum Abonnieren eines OTT-Dienstes erforderlich ist

WBOY
Freigeben: 2023-09-07 23:37:02
nach vorne
739 Leute haben es durchsucht

C++-Programm, um den Mindestbetrag zu ermitteln, der zum Abonnieren eines OTT-Dienstes erforderlich ist

Angenommen, ein Telekommunikationsbetreiber führt einen Dienst namens „All-in-One“ ein, der Zugang zu n OTT-Inhaltsanbietern zu einem Festpreis von 100.000 USD bietet. Wenn wir nun OTT-Plattformen direkt abonnieren müssen, müssen wir für jede Plattform separate Gebühren zahlen. Wir müssen nicht alle Plattformen für alle Monate abonnieren, sondern müssen einen Weg finden, ihre Dienste kostengünstig zu nutzen. Wir benötigen den Startmonat des Dienstes für Plattform i, der im Array start_month angegeben ist, und den Endmonat, der im Array end_month angegeben ist. Der für das Abonnement der Plattform erforderliche Preis ist im Array „price[i]“ angegeben. Wir müssen den Mindestbetrag herausfinden, den wir zahlen müssen, um alle Plattformen gemäß unseren Anforderungen zu abonnieren.

Wenn die Eingabe also etwa n = 3, k = 10, Startmonat = {1, 2, 1}, Endmonat = {3, 3, 2}, Preis = {5, 7, 8} ist, dann ist die Ausgabe wird 30 sein

Wir müssen den Dienst für 3 Monate abonnieren.

Für den ersten Monat müssen wir die Plattformen 1 und 3 abonnieren. Kostet jeweils 5 $ + 8 = 13 $, aber mit dem „All-in-One“-Paket kostet es nur 10 USD. Ebenso benötigen wir im zweiten Monat alle drei, für einen Gesamtpreis von 20 $. Aber wir haben für diese drei 10 Dollar bezahlt. Im dritten Monat belaufen sich die Gesamtkosten des Abonnements auf 12 US-Dollar, wir zahlen jedoch nur 10 US-Dollar.

Daher betragen die Gesamtkosten 10 + 10 + 10 = 30.

Schritte

Um dieses Problem zu lösen, folgen wir den folgenden Schritten -

Define an array pairArray
for initialize i := 0, when i < n, update (increase i by 1), do:
   insert pair(start_month[i], price[i]) at the end of pairArray
   insert pair(end_month[i] + 1, -price[i]) at the end of pairArray
sort the array pairArray
pre := 0
c := 0
res := 0
for each element p in pairArray, do:
   day := first element of p - pre
   res := res + minimum of (k, c)
   c := c + second element of p
pre := first element of p
return res
Nach dem Login kopieren

Beispiel

Sehen wir uns zum besseren Verständnis die folgende Implementierung an -

#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> G;
vector<int> res;

int solve(int n, int k, int start_month[], int end_month[], int price[]){
   vector<pair<int, int>> pairArray;
   for(int i = 0; i < n; i++) {
      pairArray.push_back(make_pair(start_month[i], price[i]));
      pairArray.push_back(make_pair(end_month[i] + 1, -price[i]));
   }
   sort(pairArray.begin(), pairArray.end());
   int pre = 0;
   int c = 0;
   int res = 0;
   for(auto p : pairArray) {
      int day = p.first - pre;
      res += min(k, c) * day;
      c += p.second; pre = p.first;
   }
   return res;
}
int main() {
   int n = 3, k = 10, start_month[] = {1, 2, 1}, end_month[] = {3, 3, 2}, price[] = {5, 7, 8};
   cout<< solve(n, k, start_month, end_month, price);
   return 0;
}
Nach dem Login kopieren

Eingabe

3, 10, {1, 2, 1}, {3, 3, 2}, {5, 7, 8}
Nach dem Login kopieren

Ausgabe

30
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonC++-Programm, um den Mindestbetrag zu ermitteln, der zum Abonnieren eines OTT-Dienstes erforderlich ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage