Salut, stie cineva unde as putea gasi solutiile oficiale pentru problemele de a IX-a de la OJI 2002? Am gasit pentru prima,
poartas pe .campion, insa pentru a doua,
mouse, nu am gasit nicaieri. Am cautat si pe
olimpiada.info, dar acolo nu sunt decat subiectele si testele, iar testele pentru a doua problema mi se pare ca nu includ si ok-ul.
Daca, totusi, nu se gaseste nicaieri, se poate uita cineva peste sursa de mai jos si sa imi spuna daca ar intra in timpul de 1s? PDF cu problema
aici. Multumesc anticipat!
#include <stdio.h>
#define N 100 + 1
#define IN "mouse.in"
#define OUT "mouse.out"
int main(void) {
int cutie[N][N], poz[N][N], m, n, i, j, k,
hrana = 0, cam = 0, max, sus, jos, stanga, dreapta;
freopen(IN, "r", stdin);
freopen(OUT, "w", stdout);
scanf("%d %d", &m, &n);
for(i = 1; i <= m; ++i)
for(j = 1; j <= n; ++j)
scanf("%d", &cutie[i][j]);
i = 1;
j = 1;
k = 1;
while(!(i == m && j == n)) {
hrana += cutie[i][j];
cutie[i][j] = 0;
poz[i][j] = k++;
sus = i > 1 ? cutie[i - 1][j] : 0;
jos = i < m ? cutie[i + 1][j] : 0;
stanga = j > 1 ? cutie[i][j - 1] : 0;
dreapta = j < n ? cutie[i][j + 1] : 0;
max = sus;
if(jos > max)
max = jos;
if(stanga > max)
max = stanga;
if(dreapta > max)
max = dreapta;
if(max == sus)
--i;
else if(max == jos)
++i;
else if(max == stanga)
--j;
else if(max == dreapta)
++j;
++cam;
}
hrana += cutie[i][j];
cutie[i][j] = 0;
poz[i][j] = k;
++cam;
printf("%d %d\n", cam, hrana);
for(i = 1; i <= cam; ++i)
for(j = 1; j <= m; ++j)
for(k = 1; k <= n; ++k)
if(poz[j][k] == i)
printf("%d %d\n", j, k);
return 0;
}