Siema, pomoze ktos z kodem?
Najprawdopodobniej robie jakims dziwnym sposobem dla Was i mam prosbe o ewentualne nakierowanie.
zadanie: https://szkopul.edu.pl/problemset/problem/UDIADIj0TZR7zMUXeF6XlM1T/site/?key=statement
#include <bits/stdc++.h>
using namespace std;
struct Grzyb {
int mas, del, dni;
// mas - masa grzyba, del - przyrost, dni - ilosc dni zycia
};
Grzyb arr[1000001];
unordered_map <int, pair <long long, int>> m;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n;
cin >> n;
int maxDz = 0, dz = 1;
// dz - wynik (optymalny dzien)
long long sum = 0, su = 0, prz = 0;
// sum - zmienna pomocnicza
for (int i = 1; i <= n; i ++) {
cin >> arr[i].mas >> arr[i].del >> arr[i].dni;
// wczytanie danych
su += arr[i].mas;
// suma grzybow w dniu 0.
maxDz = max(maxDz, arr[i].dni);
// jaki jest max dzien do sprawdzenia w symulacji
m[arr[i].dni].first += (arr[i].dni - 1) * arr[i].del + arr[i].mas;
// suma (mas poczatkowych oraz doladowywanych
// z dnia na dzien), ktore umieraja w dniu arr[i].dni (*)
m[arr[i].dni].second += arr[i].del;
// suma mas grzybow, ktore umieraja w dniu arr[i].dni (**)
prz += arr[i].del;
// przyrost z dnia na dzien
}
for (int i = 1; i <= maxDz; i ++) {
su += prz;
// za kazdym razem dodaje przyrost
if (m.find(i) != m.end())
su -= m[i].first + m[i].second, prz -= m[i].second;
// jezeli jakas ryba/ryby umiera w dniu i, to od su odejmuje
// (*) oraz (**), jednoczesnie aktualizujac przyrost
if (su > sum)
sum = su, dz = i;
//sprawdzam, czy aktualna suma nie jest najlepsza i aktualizuje sume i dzien
}
cout << dz;// << ' ' << sum;
}