Hiring Staff CodeForces - 216C
原题链接
考察:贪心
思路:
不知道具体分到哪类....总之是分情况讨论.
(1) k>1的情况,分为 m<=n-1 和 mn 两种情况
(2) k1 分为3种情况.
\(2.1\quad m<=n-2 和m==n-1 和 m==n\)
其中\(m==n\)又要细分为\(n==2和n>2\)的情况
Code
#include <iostream>
#include <cstring>
using namespace std;
int n,m,k;
int main()
{
scanf("%d%d%d",&n,&m,&k);
if(k>1&&m<n)
{
printf("%d\n",2*k);
for(int i=1;i<=k;i++)
printf("1 ");
if(k+1<=2*k) printf("%d ",n);
for(int i=k+2;i<=2*k;i++)
printf("%d ",n+1);
printf("\n");
}else if(k>1&&m==n){
printf("%d\n",2*k+1);
for(int i=1;i<=k;i++)
printf("%d ",1);
if(k+1<=2*k+1) printf("%d ",n);
for(int i=k+2;i<=2*k;i++)
printf("%d ",n+1);
printf("%d\n",2*n);
}else if(k==1&&m<=n-2)
{
printf("%d\n",2);
printf("%d %d\n",1,n);
}else if(k==1&&m==n-1)
{
printf("3\n%d %d %d\n",1,n,2*n-1);
}else{
if(n>2) printf("3\n%d %d %d\n",1,n,2*n-1);
else printf("4\n1 2 3 4\n");
}
return 0;
}