Cod sursa(job #2256563)
Utilizator | Data | 8 octombrie 2018 20:02:36 | |
---|---|---|---|
Problema | Tablete | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.06 kb |
#include <fstream>
#include <bitset>
#include <cassert>
const int maxN=1e3+1;
using namespace std;
int n,k;
bitset<maxN*maxN> used;
int sol[maxN][maxN];
int main()
{
ifstream f("tablete.in");
ofstream g("tablete.out");
f>>n>>k;
if(k%2==0){
for(int i=1;i<=n;i++){
sol[i][k]=i*k;
used[i*k]=true;
}
int val=1;
for(int i=1;i<=n;i++)
{
int idx=1;
while(idx<k)
{
if(!used[val]){
sol[i][idx]=val;
used[val]=true;
idx++;
}
val++;
}
}
for(int i=1;i<=n;i++)
{
int idx=k+1;
while(idx<=n)
{
if(!used[val]){
sol[i][idx]=val;
used[val]=true;
idx++;
}
val++;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
g<<sol[i][j]<<" ";
g<<"\n";
}
}
else{
for(int i=1;i<=n;i++){
sol[i][k]=i*k+i%2;
used[i*k+i%2]=true;
}
int val=1;
for(int i=1;i<=n;i++)
{
int idx=1;
while(idx<k)
{
if(!used[val]){
sol[i][idx]=val;
used[val]=true;
idx++;
}
val++;
}
}
for(int i=1;i<=n;i++)
{
int idx=k+1;
while(idx<=n)
{
if(!used[val]){
sol[i][idx]=val;
used[val]=true;
idx++;
}
val++;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
g<<sol[i][j]<<" ";
g<<"\n";
}
}
return 0;
}