Witam!
Mam do napisania taki program (link do pdf'a z treścią): http://pdfcast.org/pdf/skok
Napisałem taki oto kod. Czy jakby ktoś z Was miał czas, mógłby go sprawdzić czy wszystko się zgadza ponieważ zależy mi na tym żeby wszystko było dobrze napisane. :)
#include <stdio.h>
#define SIZE 100000
#define OFFSET (SIZE/2)
int t[SIZE];
void rozladuj(int x)
{
int k = (t[x]/3);
t[x] -= 3*k;
t[x-2] += k;
t[x+2] += k;
}
int main()
{
int n, i, jest3;
scanf("%d", &n);
while(n--)
{
int poz;
scanf("%d", &poz);
scanf("%d", &t[poz+OFFSET]);
}
do
{
jest3 = 0;
for(i = 0; i < SIZE; i++)
{
if(t[i] >= 3)
{
rozladuj(i);
if(t[i-2] >= 3) jest3 = 1;
}
}
} while(jest3 == 1);
i = SIZE-2;
while(i >= 0)
{
if(t[i] > 0 && t[i+1] > 0)
{
t[i]--;
t[i+1]--;
t[i+2]++;
i += 2;
}
else if(t[i] == 2 && t[i-1] > 0)
i--;
else if(t[i] == 2 && t[i+1] == 0)
{
t[i]--;
t[i-1]++;
t[i-2]++;
t[i-1]--;
t[i]--;
t[i+1]++;
i++;
}
else if(t[i] == 3)
{
rozladuj(i);
i += 2;
}
else
i--;
}
return 0;
}