zoukankan      html  css  js  c++  java
  • codeforces 439C Devu and Partitioning of the Array(烦死人的多情况的模拟)

    题目

    //这是一道有n多情况的烦死人的让我错了n遍的模拟题

    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    
    int a[100010],n,k,p;
    int vis[100010];
    int ji=0,ou=0;
    
    int main()
    {
        memset(vis,0,sizeof(vis));
        cin >> n >> k >> p;
        for(int i=0;i<n;i++)
        {
            cin >> a[i];
            if(a[i]%2==1)
                ji++;
            else ou++;
        }
        if((ji-(k-p))%2==1||ji<k-p||((ji-(k-p))/2+ou<p))
            printf("NO
    ");
        else 
        {
            printf("YES
    ");
            int odd=0,even=0,al=0;
            if(p!=0)
            {
                for(int i=0;i<n;i++)
                {
                    if(a[i]%2)
                    {
                        if(odd<k-p)
                        {
                            printf("1 %d
    ",a[i]);
                            odd++;
                            vis[i]=1;
                            al++;
                        }
                        else break;
                    }
                }
    
                for(int i=0;i<n;i++)
                {
                    if(a[i]%2==0)
                    {
                        if(even<p-1)
                        {
                            printf("1 %d
    ",a[i]);
                            even++;
                            vis[i]=1;
                            al++;
                        }
                        else break;
                    }
                }
                int flag=1;
                for(int i=0;i<n;i++)
                {
                    if(even<p-1)
                    {
                        if(vis[i]==0&&a[i]%2==1&&flag==1)
                            printf("2 %d",a[i]),flag=0,vis[i]=1,al++;
                        else if(vis[i]==0&&a[i]%2==1&&flag==0)
                            printf(" %d
    ",a[i]),flag=1,vis[i]=1,even++,al++;
                    }
                    else break;
                }
                if(n-al>0)
                {
                    cout << n-al; 
                    for(int i=0;i<n;i++)
                    {
                        if(vis[i]==0)
                            printf(" %d",a[i]);
                    }
                }    
    
            }
            else 
            {
                for(int i=0;i<n;i++)
                {
                    if(a[i]%2)
                    {
                        if(odd<k-p-1)
                        {
                            printf("1 %d
    ",a[i]);
                            odd++;
                            vis[i]=1;
                            al++;
                        }
                        else break;
                    }
                }
                if(n-al>0)
                {
                    cout << n-al; 
                    for(int i=0;i<n;i++)
                    {
                        if(vis[i]==0)
                            printf(" %d",a[i]);
                    }
                }    
    
            }
            puts("");
        }
        return 0;
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    idea 中的new file 没有jsp
    springboot-helloworld-idea
    springboot-RequestMappingHandlerMapping
    swagger-注解
    springboot-mybatis
    js-dialog
    js-jsTree
    maven-tomct插件
    maven-插件地址
    docker入门 基础命令 docker安装
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3890245.html
Copyright © 2011-2022 走看看