Cod sursa(job #230920)

Utilizator andreidragusAndrei Dragus andreidragus Data 14 decembrie 2008 10:58:13
Problema Tablete Scor 100
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Studenti Marime 1.42 kb

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#define pb push_back
#define mkp make_pair
#define vi vector<int>
#define vii vector<int> :: iterator
#define si set <int>
#define sii set <int> :: iterator
#define is insert
#define vpi vector <pair<int,int> >
#define vpii vector <pair <int,int> > :: iterator
#define spi set <pair<int,int> >
#define spii set <pair <int,int> > :: iterator
#define for_each(tip,it,multime) for( tip it = multime.begin();it!=multime.end();++it)

using namespace std;
int n,k;

set<int> ales;
vi col;


int main()
{

	
	freopen("tablete.in","r",stdin);
	freopen("tablete.out","w",stdout);

	
	scanf("%d",&n);
	scanf("%d",&k);

		

	for(int i= 1;i<=n;i++)
	{
		int cur = i * k;
		if( cur % 2)cur++;
		ales.is(cur);
		col.pb(cur);
		
	}
	
	int left = 0;
	int right =  k*n-1 ;

	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<k-1;j++)
		{
			while(ales.count(left))left++;
			left++;
			while(ales.count(left))left++;
			printf("%d ",left);
		}

		printf("%d ",col[i-1]);
		
		for(int j=0;j<n-k;j++)
		{
			while(ales.count(right))right++;
			right++;
			while(ales.count(right))right++;
			printf("%d ",right);
		}

		printf("\n");
	}

	return 0;
}