Fişierul intrare/ieşire:memcpy.in, memcpy.outSursăAlgoritmiada 2014, Runda 2
AutorCosmin Silvestru NegruseriAdăugată deklamathixMihai Calancea klamathix
Timp execuţie pe test0.6 secLimită de memorie24096 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Memcpy

Fie o matrice de dimensiuni 1000×1000 cu elemente distincte. Dorim ca în această matrice să copiem submatricea de dimensiuni N x M care are colţul stânga sus în (X, Y) peste submatricea de dimensiuni N x M care are colţul stânga sus în (NEW_X, NEW_Y). Este necesar ca acest lucru să se realizeze folosind N x M atribuiri de tipul A[x][y] = A[z][t]. Să se determine ordinea minima lexicografica in care pot fi făcute aceste atribuiri pentru a copia corect submatricea.

Date de intrare

Fişierul de intrare memcpy.in va conţine pe o singură linie 6 numere: N, M, X, Y, NEW_X, NEW_Y. Acestea reprezintă dimensiunile submatricei, coordonatele colţului stânga sus pentru poziţia iniţială a submatricei, respectiv pentru poziţia finală.

Date de ieşire

Fişierul de ieşire memcpy.out va conţine o singură valoare naturală, hash, care va fi determinată în felul următor:

int hash = 0, mod = 1e9 + 7;
for(int i = 1; i <= n * m; ++i) {
    hash += 1LL * i * raspuns[i].x * raspuns[i].y % mod;
    hash %= mod;
}

Unde răspuns[i] conţine coordonatele celulei care va fi copiată în operaţia cu numărul i.

Restricţii

  • 1 ≤ N, M ≤ 1000
  • Toate coordonatele citite sau afişate se vor afla în intervalul [1, 1000].
  • Submatricele descrise în input vor fi incluse complet în matrice.

Exemplu

memcpy.inmemcpy.out
4 4 1 1 2 2
858

Explicaţie

Celulele vor fi copiate în această ordine: (1, 4); (2, 4); (1, 3); (3, 4); (2, 3); (1, 2); (4, 1); (4, 2); (3, 1); (4, 3); (3, 2); (2, 1); (4, 4); (3, 3); (2, 2); (1, 1).

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content