83842024-01-15 11:20:02GervidLádapakolás raktárban (50)cpp17Elfogadva 50/5052ms12332 KiB
#include <iostream>
#include <vector>
#include <set>

using namespace std;

int main()
{
	int n, m, i, last, begin, out = 0, sum;
	cin >> n >> m;

	vector<int> boxes(n);

	for (i = 0; i < n; i++)
	{
		cin >> boxes[i];
	}

	i = 1, last = boxes[0], sum = boxes[0], begin = 0;

	set<int> stacksizes;
	stacksizes.insert(boxes[0]);

	while (i < n)
	{
		while (i < n && boxes[i] > last && m >= sum + boxes[i])//sum nem jó
		{
			stacksizes.insert(boxes[i]);
			last = boxes[i];
			sum += boxes[i];
			i++;
		}

		while (i < n && last > boxes[i] && !stacksizes.count(boxes[i]) && m >= sum + boxes[i])
		{
			last = boxes[i];
			sum += boxes[i];
			stacksizes.insert(boxes[i]);
			i++;
		}

		out += i - begin - 1;

		if (i < n)
		{
			begin = i;
			sum = boxes[i];
			stacksizes = { boxes[i] };
			last = boxes[i];
			i++;
		}
	}

	cout << out;
}
//12 16
//1 3 5 4 2 6 8 7 6 5 3 4
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms2084 KiB
2Elfogadva0/06ms2324 KiB
3Elfogadva2/23ms2320 KiB
4Elfogadva2/23ms2400 KiB
5Elfogadva2/23ms2536 KiB
6Elfogadva2/23ms2768 KiB
7Elfogadva2/23ms2904 KiB
8Elfogadva2/23ms3028 KiB
9Elfogadva3/33ms3184 KiB
10Elfogadva2/23ms3172 KiB
11Elfogadva2/23ms3536 KiB
12Elfogadva2/23ms3608 KiB
13Elfogadva3/34ms3616 KiB
14Elfogadva3/34ms3752 KiB
15Elfogadva3/36ms3980 KiB
16Elfogadva2/232ms5012 KiB
17Elfogadva3/343ms5556 KiB
18Elfogadva3/352ms6492 KiB
19Elfogadva3/337ms7084 KiB
20Elfogadva3/350ms10824 KiB
21Elfogadva3/345ms11200 KiB
22Elfogadva3/348ms12332 KiB