Pagini recente » Cod sursa (job #2744776) | Cod sursa (job #321538) | Cod sursa (job #1196190) | Cod sursa (job #2988057) | Cod sursa (job #369587)
Cod sursa(job #369587)
#include <fstream>
#include <cstdlib>
#include <ctime>
int main ()
{
unsigned int N, K;
//char used[1000001];
std::ifstream f_in("tablete.in");
std::ofstream f_out("tablete.out");
/*std::srand(std::time(NULL));
bool failed = false;
for (unsigned int times=0; times<5000 && !failed; ++times) {
N = std::rand() % 998 + 3;
K = std::rand() % N;
//algo
std::memset(used, sizeof(used), 0);
failed = false;
*/
f_in >> N >> K;
unsigned int i,j;
if (N%2 == 0 && K%2 == 0) {
for (i=1; i<=N; ++i) {
for (j=1; j<=N; ++j) f_out << (i-1)*N+j << ' ';
f_out << '\n';
}
}
else if (K%2 == 0) {
for (i=1; i<=N; ++i) {
for (j=1; j<=N; ++j) f_out << ( (j<=K) ? (i-1)*K+j : N*K + (i-1)*(N-K) + j-K ) << ' ';
f_out << '\n';
}
}
else { // K%2 == 1
unsigned int at = 1, r = 0, rr = 0, at2;
if (N%2 == 1) rr = N*K;
at2 = N%2 == 0 ? N*K+1 : N*K+2;
for (i=1; i<=N; ++i) {
for (j=1; j<=N; ++j) {
if (j < K) {
if (r) { f_out << r << ' '; r = 0; }
else f_out << at++ << ' ';
}
else if (j == K) {
if (at%2 == 0) f_out << at++ << ' ';
else { r=at; f_out << at+1 << ' '; at += 2; }
}
else {
if (rr) { f_out << rr << ' '; rr = 0; }
else f_out << at2++ << ' ';
}
}
f_out << '\n';
}
}
/* for (i=1; i<=N && !failed; ++i) if (!used[i]) failed = true;
if (failed) std::cout << "Failure for n=" << n << " k=" << k << std::endl;
else std::cout << "Success for n=" << n << " k=" << k << std::endl;
}*/
f_out << std::flush;
return 0;
}