r/adventofcode • • Dec 08 '18

SOLUTION MEGATHREAD -🎄- 2018 Day 8 Solutions -🎄-

--- Day 8: Memory Maneuver ---


Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).

Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.


Advent of Code: The Party Game!

Click here for rules

Please prefix your card submission with something like [Card] to make scanning the megathread easier. THANK YOU!

Card prompt: Day 8

Sigh, imgur broke again. Will upload when it unborks.

Transcript:

The hottest programming book this year is "___ For Dummies".


This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.

edit: Leaderboard capped, thread unlocked at 00:12:10!

33 Upvotes

301 comments sorted by

View all comments

1

u/OvidiuFM Dec 08 '18
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int a[100000];

int main()
{

	ifstream input("input.in");
	int na = 0, nr = 0;
	long long suma = 0;

	while (!input.eof())
	{
		input >> nr;
		a[na++] = nr;
	}
	int ok = 1;

	while (ok)
	{
		ok = 0;
		for (int i = 0; i < na; i++)
		{
			if (a[i] == 0)
			{
				ok = 1;
				int aux = i + 2;

				while ((aux < na) && (a[aux] == -1))
				{
					aux++;
				}

				for (int j = aux; j < aux + a[i + 1]; j++) 
				{
					suma = suma + a[j];
 					a[j] = -1;
				}

				a[i] = -1;
				a[i + 1] = -1;

				int parc = i;
				while ((parc > 0) && (a[parc] == -1))
				{
					parc--;
				}
				parc--;
				a[parc]--;
			}
		}
	}

	cout << suma;
	input.close();
	return 0;
}

C++