大一寒假做的hdu写到一起了, 基本都是C代码
题号 **** | 题目---- |
1. 2098 | 分拆素数和 |
2. 2092 | 整数解 |
3. 1005 | Number Sequence |
4.1001 | Sum Problem |
5.1050 | Moving Tables |
6.1205 | 吃糖果 |
7.1052 | Tian Ji – The Horse Racing |
8. 1280 | 前m大的数 |
9.1862 | EXCEL排序 (c+±AC,c-WA) |
10.1009 | FatMouse’ Trade |
11.1872 | 稳定排序 |
12.1234 | 开门人和关门人 |
13.1070 | Milk |
14.1789 | Doing Homework again |
15.1792 | A New Change Problem |
16.1108 | 最小公倍数 |
17.2111 | Saving HDU |
18.2044 | 一只小蜜蜂… |
19.2018 | 母牛的故事 |
20.1176 | 免费馅饼 |
21.2034 | 人见人爱A-B |
– | – |
壹2098
先将10000以内的素数存起来,
接着找一个比正偶数小的素数,
然后在判断偶数与此素数的差是否为素数:
#include<stdio.h>
int main()
{
int i,j,k,l,n,m,f;
int a[10001]={0};
for(i=2;i<=10000;i++)//把10000以内的素数存起来
{
f=1;//假设 i 是素数
for(j=2;j<=i/2&&f;j++)
{
if(i%j==0)
{
f=0;//i不是素数
}
}
if(f==1)
a[i]=1;//记录素数
}
while(scanf("%d",&m),m)
{
j=0;
for(i=2;i<m/2;i++)
{
if(a[i]==1)
{
if(a[m-i]==1)
{
j++;
}
}
}
printf("%d\n",j);
}
}
贰2092
a+b=n;
ab=m;
只需判断a(n-a)==m; 是否可以满足
也就是只需判断a为整数时是否满足
#include<stdio.h>
int main(void)
{
i,n,m,t;
while(scanf("%d%d",&n,&m)&&(m!=0||n!=0))
{
t=0;
for(i=-10000;i<10000;i++)
{
if(i*(n-i)==m)
{
t=1;
break;
}
}
if(t)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
叁1005
因为对于f(n)来说,
当n>=2时候,f(n)只可能为0-6之间的数字。
f[i]=(af[i-1]+bf[i-2])%7,
如果能够在f(n)中能够找到他的循环周期的话,
那么只要用f[(n-1)/T]]即可在数组f中找到其对应的值,
其算法复杂度仅仅只有O(i),这个i远远小于n。
当这个n值越大,这种周期式的算法优势就越明显
//注释:因为无论是多么优秀的算法,只要当 a、b、n中的n足够大时候,都不行,除非找到他的规律,
// 这样的话,计算一个周期T内f(n)的值即可解决问题。剩余的只要输出f[(n-1)/T]就行了。
#include<stdio.h>
#include<math.h>
int main()
{
int i,a,b,n;
char f[1000];
while(scanf("%d%d%d",&a ,&b ,&n)!=EOF)
{
if(a == 0 && b==0 && n == 0)
return 0;
f[0] = 1 ;
f[1] = 1;
if(n == 1 || n == 2)
{
printf("1\n");
continue;
}
for(i = 2 ;i < 1000 ; i++)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
if(f[i-2] == 1 && f[i-1] == 1 && i != 2) //找到循环的位置
break;
}
printf("%d\n",f[(n-1)%(i-2)]);
}
return 0;
}
肆1001
直接利用公式:
Sn=n*(a1+an)/2;
#include <stdio.h>
int main(void)
{
int n;
__int64 sum = 0;
while (scanf("%d", &n) != EOF)
{
sum = (n % 2) == 0 ? ((1 + n) * (n / 2)) : ((1 + n) * (n / 2) + n / 2 + 1);
printf("%I64d\n", sum);
printf("\n");
}
return 0;
}
伍1050
首先只需要记录一行房间就行呢
然后记录已经被占用的楼道与次数
#include<stdio.h>
#define SR(a) scanf("%d",&(a))//define的另一种用法
#define qian(a) printf("%d\n",(a))
#define FOR(i,a,b) for((i)=a;(i)<=(b);(i)++)
int main(void)
{
int i,j,n,m;
SR(n);
while(n--)
{
SR(m);
int x,y,a[201]={0},l=0;
while(m--)
{
SR(x);
SR(y);
if(x>y)
{
int t;
t=x;
x=y;
y=t;
}
FOR(j,(x+1)/2,(y+1)/2)//只考虑一边就OK
{
++a[j];//走过的路都记录
if(a[j]>l)//记录叠加的次数
l=a[j]; //记录最大叠加的次数
}
}
qian(l*10);//输出时间
}
return 0;
}
陆1205
第一种 | 第二种 |
---|---|
9个(■) 5个(@) 2个(#) 5个(&) | 12个(■) 5个(@) 3个(#) 1个(&) |
9-(5+2+5)>=2不成立,所以可以吃完 | 12-(5+3+1)>=2成立所以吃不完 |
■@& | ■@ |
■@& | ■@ |
■@& | ■@ |
■@ | ■@ |
■@ | ■@ |
■# | ■# |
■# | ■# |
■& | ■# |
■& | ■& |
■ | |
■ | |
■ | |
– | – |
也就是说最大的一组如果和其他合起来的差不大于1就Y
#include<stdio.h>
#define SR(a) scanf("%lld",&(a))//输入
#define N printf("No\n")//输出
#define Y printf("Yes\n")
#define FOR(i,a,b) for((i)=a;(i)<(b);(i)++)
int main(void)
{
long long i,j,k,l,n,m;
while(SR(n)!=EOF)
{
while(n--)
{
long long max=0,sum=0;
SR(m);
FOR(i,0,m)
{
SR(l);
sum+=l;//求总和
if(l>max)//找出种类中数量最大的
{
max=l;
}
}
sum-=max;//总和减去最大的
if(max-sum>=2)
{
N;
}
else
{
Y;
}
}
}
return 0;
}
柒1052 ↓
1、如果田忌最快的马比齐王最快的马快,则比之
2、如果田忌最快的马比齐王最快的马慢,则用田最慢的马跟齐最快的马比 //这是贪心的第一步
3、如果田忌最快的马的速度与齐威王最快的马速度相等
3.1、如果田忌最慢的比齐威王最慢的快,则比之 //这是贪心的第二步
3.2、如果田忌最慢的比齐威王最慢的慢,田忌慢VS齐王快
3.3、田忌最慢的与齐威王最慢的相等,田忌慢VS齐王快
#include<stdio.h>
#include<limits.h>
#define SR(a) scanf("%lld",&(a))
#define qian(a) printf("%lld\n",(a))
#define FOR(i,a,b) for((i)=a;(i)<(b);(i)++)
void sort(long long a[],long long n)
{
long i,j,t;
FOR(i,0,n)
{
FOR(j,i+1,n)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
int main(void)
{
long long i,j,n,m;
while(SR(n),n!=0)
{
long long a[1000],b[1000];
FOR(i,0,n)
{
SR(a[i]);
}
sort(a,n);
FOR(i,0,n)
{
SR(b[i]);
}
sort(b,n);
long long k,sum,f,ji;
ji=0; // 记录 king 比赛用的马 循环跳出的判定条件
i=j=sum=0;
k=n-1;
f=n-1;
while(1)
{
if(ji==n)
break; // king 的马全部比完后跳出
if(b[j]>a[i]) //如果king的比tian的快马快 用tian的慢马对king的快马
{
sum-=200;
j++;
k--;
ji++;
continue;
}
if(b[j]==a[i])//如果相等
{
if(b[f]<a[k])//看两人的慢马 tian的慢马比king的慢马快则比
{
f--;
k--;
sum+=200;
ji++;
continue;
}
if(b[j]>a[k])
{
sum-=200;
k--;
j++;
ji++;
}
else
{
k--;
j++;
ji++;
}
continue;
}
if(b[j]<a[i])//如果tian的比king的快马快 直接比
{
sum+=200;
j++;
i++;
ji++;
continue;
}
}
qian(sum);
}
return 0;
}
捌1280 ↓
#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int a[3002],b[9000002];
int main()
{
int n,m;
int i,j,k;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
k=0;
for(i=0;i<n;i++) //求出所有的和
for(j=i+1;j<n;j++)
b[k++]=a[i]+a[j];
sort(b,b+k,cmp);
printf("%d",b[0]);
for(i=1;i<m;i++)
printf(" %d",b[i]);
printf("\n");
}
return 0;
}
玖 1862 ↓
C++代码:
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#define MAX 100010
using namespace std;
struct IN
{
char num[10];
char name[10];
int mark;
};
IN a[MAX];
int cmp1(IN x,IN y)//排序学号
{
return strcmp(x.num ,y.num)<0;
}
int cmp2(IN x,IN y)//排序名字
{
if(strcmp(x.name,y.name))
return strcmp(x.name ,y.name)<0;
return strcmp(x.num ,y.num)<0;//名字相同排序学号
}
int cmp3(IN x,IN y)//排序成绩
{
if(x.mark!=y.mark)
return x.mark<y.mark;
return strcmp(x.num ,y.num)<0;//成绩相同 排序学号
}
int main()//主函数
{
int i,j=1,k,n,c;
while(scanf("%d%d",&n,&c)&&(n+c))
{
memset(a,0,sizeof(a));//格式化
for(i=0;i<n;i++)//遍历结构
scanf("%s %s %d",a[i].num,a[i].name,&a[i].mark);
if(c==1) sort(a,a+n,cmp1);//排序学号
else if(c==2) sort(a,a+n,cmp2); //排序名字
else sort(a,a+n,cmp3); //排序成绩
printf("Case %d:\n",j++); //输出结构
for(i=0;i<n;i++) printf("%s %s %d\n",a[i].num,a[i].name,a[i].mark);
}
return 0;//返回
}
/************************************************************************************************/
/*
C语言代码一直没过,求助,,: ↓
#include<stdio.h>
#include<string.h>
struct pai{//结构输入
char str[10],ser[10];
int fen;
}a[110000],t[2];
void sort1(int n){//排序学号
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(a[i].str,a[j].str)>0)
{
t[1]=a[i];
a[i]=a[j];
a[j]=t[1];
memset(t,0,sizeof(t));
}
}
}
void sort2(int n){//排序名字
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(a[i].ser,a[j].ser)>0)
{
t[1]=a[i];
a[i]=a[j];
a[j]=t[1];
memset(t,0,sizeof(t));
}
}
for(i=0;i<n;i++)//名字相同排序学号
for(j=i+1;j<n;j++)
{
if(strcmp(a[i].ser,a[j].ser)==0)
{
if(strcmp(a[i].str,a[j].str)>0)
{
t[1]=a[i];
a[i]=a[j];
a[j]=t[1];
memset(t,0,sizeof(t));
}
}
}
}
void sort3(int n){//排序成绩
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i].fen>a[j].fen)
{
t[1]=a[i];
a[i]=a[j];
a[j]=t[1];
memset(t,0,sizeof(t));
}
}
for(i=0;i<n;i++)//成绩相同排序学号
for(j=i+1;j<n;j++)
{
if(a[i].fen==a[j].fen)
{
if(strcmp(a[i].str,a[j].str)>0)
{
t[1]=a[i];
a[i]=a[j];
a[j]=t[1];
memset(t,0,sizeof(t));
}
}
}
}
int main(void)//主函数
{
int i,k=1,n,m;
while(scanf("%d%d",&n,&m)&&(n+m))//输入
{
memset(a,0,sizeof(a));
for(i=0;i<n;i++)//遍历结构
scanf("%s %s %d", a[i].str, a[i].ser,&a[i].fen);
/*↓↓↓↓↓↓↓↓↓↓ →处理 ← ↓↓↓↓↓↓↓↓↓↓↓↓↓*/
if(m==1) sort1(n);//学号 排序
else if(m==2) sort2(n);//名字 排序
else sort3(n);//成绩 排序
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
printf("Case %d:\n",k++);//输出
for(i=0;i<n;i++) printf("%s %s %d\n",a[i].str,a[i].ser,a[i].fen);
}
return 0;
}
*/
拾 1009 ↓
#include<stdio.h>
#include<string.h>
struct mao{
int gua,shi;
double bi;
}a[1001],t;
void sort(int n){
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i].bi<a[j].bi)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
int main(void)
{
double l,n;
int i,m;
while(scanf("%lf%d",&n,&m),m!=-1 || n!=-1)
{
memset(a,0,sizeof(a));
for(i=0;i<m;i++)
{
scanf("%d%d",&a[i].gua,&a[i].shi);
a[i].bi=a[i].gua*1.0/a[i].shi;//求出性价比
}
sort(m);//性价比排序
l=0;
for(i=0;i<m;i++)
{
if(n>=a[i].shi)
{
l+=a[i].gua;
n-=a[i].shi;
}
else
{
l+=(n*1.0/a[i].shi)*a[i].gua;
break;
}
}
printf("%.3f\n",l);
}
}
拾壹1872 ↓
#include <stdio.h>
#include<string.h>
int main()
{
int s[310], p[310], i, j, t, n;
char a[310][110], b[310][110], c[110];
while (~scanf("%d%*c", &n))//输入不等于EOF
{
for (i = 0; i < n; i++)//遍历
{
gets(a[i]);
sscanf(a[i], "%*s%d", &s[i]);//只记录成绩
}
for (i = 0; i < n; i++)
{
gets(b[i]);
sscanf(b[i], "%*s%d", &p[i]);//只记录成绩
}
for (i = 0; i < n - 1; i++)//排序
{
for (j = 0; j < n - i - 1; j++)
{
if (s[j] < s[j + 1])
{
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
strcpy(c, a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], c);
}
}
}
for (i = 0; i < n; i++)
if (strcmp(a[i], b[i]))
break;
for (j = 0; j < n; j++)
if (s[j] != p[j])
break;
if (i == n && j == n)
printf("Right\n");
else if (j == n)
{
printf("Not Stable\n");
for (j = 0; j < n; j++)
printf("%s\n", a[j]);
}
else
{
printf("Error\n");
for (j = 0; j < n; j++)
printf("%s\n", a[j]);
}
}
return 0;
}
拾贰1234 ↓
#include <stdio.h>
#include<string.h>
#include<limits.h>
int main(void)
{
int i,j,k,l,n,m;
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
char a[2][50],str1[50],str2[50],str3[50];
scanf("%d",&m);
int t1,t2,t3,t4,t5,t6;
int time1=0,time2=0,max=INT_MIN,min=INT_MAX;
for(i=0;i<m;i++)
{
scanf("%s %s %s",str1,str2,str3);//输入
sscanf(str2,"%2d%*c%2d%*c%2d",&t1,&t2,&t3);//把时间转为数字
sscanf(str3,"%2d%*c%2d%*c%2d",&t4,&t5,&t6);
time1=t1*3600+t2*60+t3;//求秒
time2=t4*3600+t5*60+t6;
if(time1<min)//记录开门人
{
min=time1;
strcpy(a[0],str1);
}
if(time2>max)//记录关门人
{
max=time2;
strcpy(a[1],str1);
}
}
printf("%s %s\n",a[0],a[1]);
}
}
return 0;
}
拾叁 1070 ↓
#include<stdio.h>
#include<string.h>
struct milk{
char pp[110];//品牌
int jiage;//价格
int liang;//体积
double dj;//单位量
}nn[100];
int main(void)
{
int t,n,i,k,dj;
double min;
scanf("%d",&t);
while(t--)
{
memset(nn,0,sizeof(nn));
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%d%d",nn[i].pp,&nn[i].jiage,&nn[i].liang);
if(nn[i].liang>=1000)//体积大于六天的量
{
nn[i].dj=nn[i].jiage*1.0/5;
}
else if(nn[i].liang<200)//体积不够一天
{
nn[i].dj=0;
}
else//其他
{
nn[i].dj=nn[i].jiage*1.0/(nn[i].liang/200);
}
}
min=1000000;
for(i=0;i<n;i++)
{
if(nn[i].dj<min && nn[i].dj!=0)
{
min=nn[i].dj;
k=i;
}
}
for(i=0;i<n;i++)
{
if(nn[i].dj==nn[k].dj)
{
if(nn[i].liang>nn[k].liang)
k=i;
}
}
printf("%s\n",nn[k].pp);
}
return 0;
}
拾肆1789 ↓
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1005;
struct Node {
int day, cost;
} node[maxn];
int n;
int f[maxn];
int cmp(Node a, Node b) {
return a.cost < b.cost;
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &node[i].day);
if (node[i].day > n)
node[i].day = n;
}
int sum = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &node[i].cost);
sum += node[i].cost;
}
sort(node, node+n, cmp);
memset(f, 0, sizeof(f));
for (int i = n-1; i >= 0; i--)
for (int j = node[i].day; j >= 1; j--)
if (!f[j]) {
f[j] = 1;
sum -= node[i].cost;
break;
}
printf("%d\n", sum);
}
return 0;
}
拾伍 1792 ↓
#include<stdio.h>
/*
题目就是给了两个互质的数A,B。
A*x+B*y(x>=0,y>=0)
问最大不能表示的数,和不能表示的数的个数。
数论知识;
个数就是 --->>(A-1)*(B-1)/2;
最大不能表示的数就是 --->> A*B-A-B;
*/
int main()
{
int i,j,k,l,n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
k=m*n-n-m;
l=(n-1)*(m-1)/2;
printf("%d %d\n",k,l);
}
}
拾陆 1108 ↓
#include<stdio.h>
int main()
{
int i,j,k,l,n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(k=1;;k++)
{
if(k%n==0 && k%m==0)//简单找就过了
break;
}
printf("%d\n",k);
}
}
拾柒 2111 ↓
#include<stdio.h>
struct bag
{
int pi;
int mi;
}a[1005],t;
void sort(int n)//danjia
{
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i].pi<a[j].pi)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
int main()
{
int n,m,i,j,count;
while(~scanf("%d",&n)&&n)
{
scanf("%d",&m);
count=0;
for(i=0;i<m;i++)
scanf("%d %d",&a[i].pi,&a[i].mi);
sort(m);
for(i=0;i<m;i++)
{
if(n>a[i].mi)
{
count+=a[i].mi*a[i].pi;
n-=a[i].mi;
}
else
{
count+=a[i].pi*n;
break;
}
}
printf("%d\n",count);
}
return 0;
}
拾捌 2044 ↓
#include<stdio.h>
int main(void)
{
long long i,j,k,l,n,m;
long long a[51]={1,1};
for(i=2;i<=50;i++)
{
a[i]=a[i-1]+a[i-2];
}
while(scanf("%lld",&n)!=EOF)
{
while(n--)
{
scanf("%lld%lld",&m,&l);
printf("%lld\n",a[l-m]);
}
}
}
拾玖 2018 ↓
#include<stdio.h>
int main(void)
{
long long i,j,k,l,n,m;
long long a[57]={1,2,3};
for(i=3;i<=56;i++)
{
a[i]=a[i-1]+a[i-3];
}
while(scanf("%lld",&n)&&n)
{
printf("%lld\n",a[n-1]);
}
}
贰拾 1176 ↓
解题思路:
首先对于gameboy来说他下一秒只能在 0~10 这十一个位置移动,而对于 1~9 这九个位置来说他可以移动(假设他现在的位置为x)到x+1,或者x-1,或者x;0和10这两个位置只有两个位置可以移动,可以用dp[t][x],t秒的馅饼获得就看t-1秒时的下一位置(x+1,x,x-1)因为要求整个过程的最大值,因此求的是dp累加的和
所以状态转移方程式为:
a[i][j]+=max(a[i+1][j-1],max(a[i+1][j],a[i+1][j+1]));
比如:
6
5 1
4 1
6 1
7 2
7 2
8 3
第一步:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
三秒 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
二秒 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 |
一秒 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
第二步
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
三秒 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1max | 0 | 0 | 0 |
二秒 | 0 | 0 | 0 | 0 | 0 | 0 | (2+1)max | 0+1 | 0+1 | 0 | 0 |
一秒 | 0 | 0 | 0 | 0+1 | 0+1 | 1+(2+1) | 0+2+1 | 0+2+1 | 0+0+1 | 0+0+1 | 0 |
c代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef long long ll;
ll a[100010][15];
ll max(ll x,ll y)
{
return (x > y ? x : y);
}
int main(void)
{
ll i,j,k,l,n,m,weizhi,time;
while(scanf("%lld",&n)&&n)
{
ll tmax=0;
memset(a,0,sizeof(a));//初始化
for(i=0;i<n;i++)//遍历
{
scanf("%lld %lld",&weizhi,&time);
a[time][weizhi+1]++; //time,weizhi,a[time][weihzi]-分别记录饼掉落时间,位置,个数 位置+1是为避免0-1不存在
tmax=max(tmax,time);//记录最后落下时间
}
for(i=tmax-1;i>=0;i--)//每个时间
{
for(j=12;j>=0;j--)/
{
a[i][j] += max(a[i+1][j-1],max(a[i+1][j],a[i+1][j+1]));
}
}
printf("%lld\n",a[0][6]);
}
return 0;
}
贰拾壹 2034 ↓
#include<stdio.h>
#include<string.h>
#include<limits.h>
typedef long long ll;
void sort(ll a[],ll n)
{
ll i,j,t;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
int main()
{
ll i,j,k,l,n,m;
while(scanf("%lld%lld",&n,&m),m||n)
{
ll a[110],b[110],c[110];
for(i=0;i<n;i++)//遍历第一个
scanf("%lld",&a[i]);
for(i=0;i<m;i++)//遍历第二个
scanf("%lld",&b[i]);
for(i=0,k=0,l=0;i<n;i++)//处理
{
for(j=0;j<m;j++)
{
if(a[i]==b[j])
break;
}
if(j==m)
{
c[k]=a[i];
k++;
l=1;//说明c数组有元素
}
}
if(l==1)
{
sort(c,k);
for(i=0;i<k;i++)
printf("%lld ",c[i]);
printf("\n");
}
else if(l==0)
{
printf("NULL\n");
}
}
return 0;
}