Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | memcpy.in, memcpy.out | Sursă | Algoritmiada 2014, Runda 2 |
Autor | Cosmin Silvestru Negruseri | Adăugată de | |
Timp execuţie pe test | 0.3 sec | Limită de memorie | 24096 kbytes |
Scorul tău | N/A | Dificultate | N/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]. În ce ordine 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
Hash-ul e ceva de genu:
hash = 0, mod = 1e9 + 7;
for(int i = 0; i < all; ++i) {
hash += 1LL * i * ans[i].first * ans[i].second mod;
hash = mod;
}
În fişierul de ieşire memcpy.out se vor afla NxM linii, fiecare conţinând câte o pereche de numere. Dacă linia i conţine perechea (a, b) atunci celula cu coordonatele (a, b) va fi copiată la momentul i. Se observă că destinaţia de copiere pentru această celulă este unică. În consecinţă, nu va fi specificată.
Restricţii
- 1 ≤ N, M ≤ 500
- 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.in | memcpy.out |
---|---|
4 4 1 1 2 2 | 758 |
Explicaţie
...