Task
Hãy viết chương trình cho yêu cầu trên.
Input
• Dòng thứ nhất gồm hai số nguyên dương n và x thỏa 1 ≤ n, x ≤ 105 , với n là kích thước của dãy, x là phần tử cần chèn.
• Dòng tiếp theo chứa n phần tử số nguyên, các phần tử cách nhau ký tự trắng.
Output • In ra vị trí cần chèn.
Samples
input 4 5 1 3 5 6
output 2
input 4 7 1 3 5 6
output 4
Code:
Cách 1:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,x,k;
cin>>n>>x;
int a[n],count=0;
for(int i = 0 ; i < n ;i++)
cin>>a[i];
for(int i = 0 ; i < n ; i++)
{
k = i;
if(x <= a[i])
{
cout<<i;
break;
}
count++;
}
if(count == n)
cout<<k+1;
return 0;
}
Cách 2:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
cin>>n>>x;
int a[n];
for(int i = 0 ; i < n ; i++)
cin>>a[i];
int b[n+1],z=0,i=0,count=0;
while(i < n)
{
if(x <= a[i])
{
b[z++] = x;
i--;
count++;
}
if(x > a[i])
{
b[z++] = a[i];
count++;
}
i++;
}
if(count == n)
b[n] = x;
for(int i = 0 ; i < n + 1 ; i++)
{
if(x == b[i])
{
cout<<i;
break;
}
}
return 0;
}
Cách 3:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
cin>>n>>x;
int a[n];
for(int i = 0 ; i < n ; i++)
cin>>a[i];
int b[n+1],z=0;
for(int i = 0 ; i < n ; i++)
b[z++]=a[i];
b[n] = x;
for(int i = 0 ; i < n ; i++)
{
for(int j = i + 1 ; j < n+1 ; j++)
{
if(b[i] > b[j])
{
int t = b[i];
b[i] = b[j];
b[j] = t;
}
}
}
for(int i = 0 ; i < n + 1 ; i++)
{
if(x == b[i])
{
cout<<i;
break;
}
}
return 0;
}