2008/12/05

Нэг хэмжээст массивийн хэрэглээ

SPOJ-ын бодлогын архив2889.
Орлуулга
Бодлогын дугаар: ABR0632


a1, ..., an, p болон k натурал тоонууд өгөгдөв (a1 ≤ a2 ≤ ... ≤ an, k ≤ n ≤ 2000). a1,..., an дарааллаас k дугаартай элементийг (өөрөөр хэлбэл ak) устгаж, эрэмбийг нь алдагдуулахгүйгээр p гэсэн утгатай элементийг нэм.

Input

Эхний мөрөнд n, k, p тоонууд зайгаар тусгаарлагдан өгөгдөнө. Дараагийн мөрөнд a1, ..., an тоонууд зайгаар тусгаарлагдан байрлана.

Output

Зохих хувиргалтууд хийгдсэн a1, ..., an тоонуудыг зайгаар тусгаарлан нэг мөрөнд хэвлэнэ.

Example

Input:

7 2 6
1 2 3 4 5 7 7

Output:
1 3 4 5 6 7 7

Энэ бодлогын шийдэл нь k дугаартай элементэд р гэсэн утгыг оноож үүссэн n элемэнт бүхий массиваа эрэмбэлэх явдал болно. Харин k дугаар элемэнтэд p утгыг оноохдоо массивийг 0 - ээс эхлэн дугаарладагийг мартаж болохгүй.

1.#include <stdio.h>
2.main()
3.{
4. int n,p,k;
5. int a[2000];
6. int i,j,r;
7. scanf("%d%d%d",&n,&k,&p);
8. for(int q=0; q<n; q++)
9. {
10. scanf("%d",&a[q]);
11. if(q==(k-1)) a[q]=p;
12. }
13.
14. for(i=1;i<n;i++)
15. { j=i;
16. while(j>0 && a[j-1]>a[j])
17.
18. {
19. r=a[j];
20. a[j]=a[j-1];
21. a[j-1]=r;
22. j--;
23. }
24. }
25. for(int w=0; w<n; w++)
26. printf("%d ",a[w]);
27.
28. return 0;
29.}

3 comments:

  1. Гансүхээ энэ бодолгынхоо бодолтыг засаарай ок

    ReplyDelete
  2. ОК. Бодолтуудыг заслаа. Бодолтод биш, HTML-тэй ажиллахдаа алдаа гаргажээ.

    ReplyDelete

Миний бичсэн бичлэг танд өчүүхэн ч болтугай хэрэг болсон бол сэтгэгдлээ бичиж үлдээхийг хүсье. Баярлалаа :)