Pagini recente » Cod sursa (job #2649892) | Cod sursa (job #2798769) | Cod sursa (job #1251384) | Cod sursa (job #1811564) | Cod sursa (job #661852)
Cod sursa(job #661852)
#include <iostream>
#include <fstream>
using namespace std;
long n, k;
int a[1005][1005];
ofstream g("tablete.out");
void citire() {
ifstream f("tablete.in");
f>>n>>k;
f.close();
}
void initializare() {
int i, j, nr=0;
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
nr++;
a[i][j]=nr;
}
}
}
void rezolvare() {
int i, j;
long aux;
for(i=1; i<n; i++) {
if(a[i][k]%2==1) { //am gasit unu impar ce trebuie schimbat
j=1;
while(a[i+1][j]%2==1) { j++; }
aux=a[i][k]; //schimb elementul impar de pe coloana k
a[i][k]=a[i+1][j]; //cu primul element par de pe linia urmatoare
a[i+1][j]=aux;
}
}
//mai am de rezolvat ultima linie, unde daca am numar impar, il schimb cu ultimul de pe linia anterioara
if(a[n][k]%2==1) {
j=n;
while(a[n-1][j]%2==1) { j--; }
aux=a[n][k];
a[n][k]=a[n-1][j];
a[n-1][j]=aux;
}
//mai urmeaza sa sortez din nou toate liniile
bool schimbat;
for(i=1; i<=n; i++) {
schimbat=1;
while(schimbat) {
schimbat=0;
for(j=1; j<n; j++) {
if(a[i][j]>a[i][j+1]) {
aux=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=aux;
schimbat=1;
}
}
}
}
//o afisare de proba;
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
g<<a[i][j]<<" ";
}
g<<"\n";
}
}
int main() {
citire();
initializare();
rezolvare();
g.close();
return 0;
}