zoukankan      html  css  js  c++  java
  • B. Painting Pebbles

    B. Painting Pebbles
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    There are n piles of pebbles on the table, the i-th pile contains ai pebbles. Your task is to paint each pebble using one of the k given colors so that for each color c and any two piles i and j the difference between the number of pebbles of color c in pile i and number of pebbles of color c in pile j is at most one.

    In other words, let's say that bi, c is the number of pebbles of color c in the i-th pile. Then for any 1 ≤ c ≤ k, 1 ≤ i, j ≤ n the following condition must be satisfied |bi, c - bj, c| ≤ 1. It isn't necessary to use all k colors: if color c hasn't been used in pile i, then bi, c is considered to be zero.

    Input

    The first line of the input contains positive integers n and k (1 ≤ n, k ≤ 100), separated by a space — the number of piles and the number of colors respectively.

    The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 100) denoting number of pebbles in each of the piles.

    Output

    If there is no way to paint the pebbles satisfying the given condition, output "NO" (without quotes) .

    Otherwise in the first line output "YES" (without quotes). Then n lines should follow, the i-th of them should contain ai space-separated integers. j-th (1 ≤ j ≤ ai) of these integers should be equal to the color of the j-th pebble in the i-th pile. If there are several possible answers, you may output any of them.

    Sample test(s)
    Input
    4 4
    1 2 3 4
    Output
    YES
    1
    1 4
    1 2 4
    1 2 3 4
    Input
    5 2
    3 2 4 1 3
    Output
    NO
    Input
    5 4
    3 2 4 3 5
    Output
    YES
    1 2 3
    1 3
    1 2 3 4
    1 3 4
    1 1 2 3 4

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 #include <string>
     7 #include <vector>
     8 #include <set>
     9 #include <map>
    10 #include <queue>
    11 #include <stack>
    12 #include <sstream>
    13 #include <cctype>
    14 #include <cassert>
    15 #include <typeinfo>
    16 #include <utility>    //std::move()
    17 using namespace std;
    18 const int INF = 0x7fffffff;
    19 const double EXP = 1e-8;
    20 const int MS = 101;
    21 typedef long long LL;
    22 
    23 int a[MS];
    24 int main()
    25 {
    26     int n, k, i, j;
    27     cin >> n >> k;
    28     int mini = INF, maxi = -INF;
    29     for (int i = 0; i < n; i++)
    30     {
    31         cin >> a[i];
    32         if (mini>a[i])
    33             mini = a[i];
    34         if (maxi < a[i])
    35             maxi= a[i];
    36     }
    37     if ((maxi / k - 1)*k+ maxi%k > mini)
    38     {
    39         cout << "NO" << endl;
    40     }
    41     else
    42     {
    43         cout << "YES" << endl;
    44         for (i = 0; i < n; i++)
    45         {
    46             for (j = 0; j < a[i]; j++)
    47             {
    48                 if (j)
    49                     cout << " ";
    50                 cout << j%k + 1;
    51             }
    52             cout << endl;
    53         }
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    搜索1009
    搜索1004
    Java文件操作
    搜索1007
    连接查询
    SQL学习——数据类型
    SQL学习——基本语法
    <转载>GIS数据下载网站大全
    DOM查询练习
    day09【继承、super、this、抽象类】
  • 原文地址:https://www.cnblogs.com/767355675hutaishi/p/4264965.html
Copyright © 2011-2022 走看看