• D. Game With Array


    D. Game With Array

    time limit per test

    1 second

    memory limit per test

    256 megabytes

    input

    standard input

    output

    standard output

    Petya and Vasya are competing with each other in a new interesting game as they always do.

    At the beginning of the game Petya has to come up with an array of NN positive integers. Sum of all elements in his array should be equal to SS. Then Petya has to select an integer KK such that 0≤K≤S0≤K≤S.

    In order to win, Vasya has to find a non-empty subarray in Petya's array such that the sum of all selected elements equals to either KK or S−KS−K. Otherwise Vasya loses.

    You are given integers NN and SS. You should determine if Petya can win, considering Vasya plays optimally. If Petya can win, help him to do that.

    Input

    The first line contains two integers NN and SS (1≤N≤S≤1061≤N≤S≤106) — the required length of the array and the required sum of its elements.

    Output

    If Petya can win, print "YES" (without quotes) in the first line. Then print Petya's array in the second line. The array should contain NN positive integers with sum equal to SS. In the third line print KK. If there are many correct answers, you can print any of them.

    If Petya can't win, print "NO" (without quotes).

    You can print each letter in any register (lowercase or uppercase).

    Examples

    input

    Copy

    1 4
    

    output

    Copy

    YES
    4
    2

    input

    Copy

    3 4
    

    output

    Copy

    NO

    input

    Copy

    3 8
    

    output

    Copy

    YES
    2 1 5
    4

    样例可不是白给的,从看样例到解决问题只需五分钟

    根据两个YES和一个NO猜测是m与n是大于二倍关系才能完成表示,并通过手写几个小样例发现确实是这样,而且2倍的时候也能表示

    再考虑通解,抓住大于2倍的特点,我们前n-1个全部填上1,剩下全部填上m-(n-1)

    再把k选成m/2这样的话,无论怎么表示,要么小于m/2,要么大于m/2

    做多了思路自然产生

    1. #include
    2. #include
    3. #include
    4. # include
    5. #include
    6. #define mo 998244353;
    7. using namespace std;
    8. typedef long long int ll;
    9. int main()
    10. {
    11. int n,m;
    12. cin>>n>>m;
    13. if(m>=2*n)
    14. {
    15. cout<<"YES"<
    16. int up=m/2;
    17. for(int i=1;i
    18. {
    19. cout<<1<<" ";
    20. }
    21. cout<-1)<
    22. cout<2<
    23. }
    24. else
    25. {
    26. cout<<"NO"<
    27. }
    28. return 0;
    29. }

  • 相关阅读:
    Xilinx MicroBlaze定时器中断无法返回主函数问题解决
    Abp 业务异常源码解读
    stm32HAL_GPIO输入
    如何使用 Vue.js 中的自定义指令编写一个URL清洗器
    AlexNet重点介绍和源码测试
    fusion cube
    Java中的命名规则
    客户开发信怎么写?新手如何发客户开发信?
    关于美国服务器IP的几个常见问题
    前端工程化精讲第九课 构建总览:前端构建工具的演进
  • 原文地址:https://blog.csdn.net/jisuanji2606414/article/details/126269035