前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Code Forces 644A Parliament of Berland

Code Forces 644A Parliament of Berland

作者头像
ShenduCC
发布2018-04-26 16:19:03
6200
发布2018-04-26 16:19:03
举报
文章被收录于专栏:算法修养算法修养

A. Parliament of Berland time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output There are n parliamentarians in Berland. They are numbered with integers from 1 to n. It happened that all parliamentarians with odd indices are Democrats and all parliamentarians with even indices are Republicans.

New parliament assembly hall is a rectangle consisting of a × b chairs — a rows of b chairs each. Two chairs are considered neighbouring if they share as side. For example, chair number 5 in row number 2 is neighbouring to chairs number 4 and 6 in this row and chairs with number 5 in rows 1 and 3. Thus, chairs have four neighbours in general, except for the chairs on the border of the hall

We know that if two parliamentarians from one political party (that is two Democrats or two Republicans) seat nearby they spent all time discussing internal party issues.

Write the program that given the number of parliamentarians and the sizes of the hall determine if there is a way to find a seat for any parliamentarian, such that no two members of the same party share neighbouring seats.

Input The first line of the input contains three integers n, a and b (1 ≤ n ≤ 10 000, 1 ≤ a, b ≤ 100) — the number of parliamentarians, the number of rows in the assembly hall and the number of seats in each row, respectively.

Output If there is no way to assigns seats to parliamentarians in a proper way print -1.

Otherwise print the solution in a lines, each containing b integers. The j-th integer of the i-th line should be equal to the index of parliamentarian occupying this seat, or 0 if this seat should remain empty. If there are multiple possible solution, you may print any of them.

Examples input 3 2 2 output 0 3 1 2 input 8 4 3 output 7 8 3 0 1 4 6 0 5 0 2 0 input 10 2 2 output -1

代码语言:javascript
复制
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <queue>

using namespace std;
int a[105][105];
int l1[10005];
int r1[10005];
int num,n,m;
int main()
{
    scanf("%d%d%d",&num,&n,&m);
    if(num>n*m)
    {
        cout<<-1<<endl;
    }
    else
    {
        memset(a,0,sizeof(a));
        int cnt=1;int cot=1;
        for(int i=1;i<=num;i++)
        {
            if(i&1)
                l1[cnt++]=i;
            else
                r1[cot++]=i;
        }
        cnt=1;cot=1;
        for(int i=1;i<=m;i+=2)
        {
            a[1][i]=l1[cnt++];
            if(i+1<=m)
            a[1][i+1]=r1[cot++];
        }
        for(int i=2;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(a[i-1][j]&1)
                    a[i][j]=r1[cot++];
                else
                    a[i][j]=l1[cnt++];
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(j==m)
                cout<<a[i][j];
                else
                    cout<<a[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档