#include
#include
using namespace std;
int a[1000];
int N;
int main(){
cin>>N;
for (int i = 0; i < N; ++i)
{
cin>>a[i];
}
sort(a,a+N);
int n = unique(a,a+N) - a;
cout<<n<<endl;
for (int i = 0; i < n; ++i)
{
cout<<a[i]<<" ";
}
return 0;
}
#include
#include
#include
using namespace std;
int main(){
int N;
long long B;
cin>>N>>B;
vector<int> v(N);
for (int i = 0; i < N; ++i)
{
cin>>v[i];
}
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
int least = 0, i = 1;
while(i <= N){
long long sum = 0;
for (int j = 0; j < i; ++j)
{
sum += v[j];
}
if (sum >= B)
{
least = i;
break;
}
i++;
}
cout<<least<<endl;
return 0;
}
#include
#include
#include
using namespace std;
void swap(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
int main(int argc, char const *argv[])
{
int N;
cin>>N;
int count = 0;
vector<int> v(N);
for (int i = 0; i < N; ++i)
{
cin>>v[i];
}
for (int i = 0; i < N - 1; ++i)
{
for (int j = 0; j < N - i - 1; ++j)
{
if (v[j] > v[j + 1])
{
swap(v[j],v[j + 1]);
count++;
}
}
}
cout<<count<<endl;
return 0;
}
#include
#include
#include
#include
using namespace std;
int main(int argc, char const *argv[])
{
int n;
cin>>n;
vector<long long> v(n);
set<long long> s;
for (int i = 0; i < n; ++i)
{
cin>>v[i];
}
for (int i = 0; i < n - 1; ++i)
{
int ans = abs(v[i] - v[i + 1]);
if (ans >= 1 && ans <= n - 1)
{
if (!s.insert(ans).second)
{
cout<<"Not jolly";
return 0;
}
}
else
{
cout<<"Not jolly"<<endl;
return 0;
}
}
cout<<"Jolly"<<endl;
return 0;
}
#include
#include
#include
using namespace std;
int main(){
int m,n;
cin>>n>>m;
vector<int> a(m);
for (int i = 0; i < m; ++i)
{
cin>>a[i];
}
sort(a.begin(),a.end());
for (int i = 0; i < m; ++i)
{
cout<<a[i]<<" ";
}
return 0;
}
#include
#include
#include
using namespace std;
int main(int argc, char const *argv[])
{
int n;
cin>>n;
vector<int> v(n);
for (int i = 0; i < n; ++i)
{
cin>>v[i];
}
sort(v.begin(),v.end());
for (int i = 0; i < n; ++i)
{
cout<<v[i]<<" ";
}
return 0;
}
题目直接用sort()结束了,但是快速排序的方法一定要学习,网络上有很多讲解快速排序的,这里放一段java代码
private void quickSort(int[] nums,int l,int r) {
if(l < r) {
int i = l,j = r, x = nums[l];
while(i < j) {
while(i < j && nums[j] >= x) {
j --;
}
if(i < j) {
nums[i] = nums[j];
}
while(i < j && nums[i] < x) {
i ++;
}
if(i < j) {
nums[j] = nums[i];
}
}
nums[i] = x;
quickSort(nums,l,i-1);
quickSort(nums,i+1,r);
}
#include
#include
using namespace std;
bool cmp(int* a,int* b)
{
if(a[0] != b[0]) return a[0] > b[0];//按第一列即总成绩降序排列
if(a[1] != b[1]) return a[1] > b[1];//按第二列即语文成绩降序排列
return a[4] < b[4];//最后按学号升序排列
}
int main(){
int n;
cin>>n;
int** a = new int*[n];
for (int i = 0; i < n; ++i)
{
a[i] = new int[5];
a[i][0] = 0;
for (int j = 1; j <= 3; ++j)
{
cin>>a[i][j];
a[i][0] += a[i][j];
}
a[i][4] = i + 1;
}
sort(a,a + n,cmp);
for (int i = 0; i < 5; ++i)
{
cout<<a[i][4]<<" "<<a[i][0]<<endl;
}
return 0;
}
#include
#include
using namespace std;
/**
*string的比较 保存数字的字符串=高精度版比较大小
*/
int main(){
int n,id;
string max = "";
string in;
cin>>n;
for (int i = 0; i < n; ++i)
{
cin>>in;
int inSize = in.size();
int maxSize = max.size();
if (inSize > maxSize || (inSize == maxSize && in > max))
{
max = in;
id = i + 1;
}
}
cout<<id<<endl<<max<<endl;
return 0;
}
#include
#include
#include
using namespace std;
//按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。
bool cmp(vector<int> a,vector<int> b){
if (a[1]!=b[1])
{
return a[1] > b[1];
}
else{
return a[0] < b[0];
}
}
int main(int argc, char const *argv[])
{
int n,m;//n表示报名参加笔试的选手总数,m表示计划录取的志愿者人数
cin>>n>>m;
int count = m * 3 / 2;//count表示入选人数 考虑同分情况 初始count位置不一定是真正入选人数 需要调整
vector< vector<int> > v(n,vector<int>(2));
//第一列报名号 第二列表示笔试成绩
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < 2; ++j)
{
cin>>v[i][j];
}
}
//按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。
sort(v.begin(),v.end(),cmp);
//分数线由定义是count = m * 3 / 2对应分数
int scoreLine = v[count - 1][1];
//寻找顺次第一个小于分数线的人即可计算出入选人数
for (int i = 0; i < n; ++i)
{
if (v[i][1] < scoreLine)
{
count = i;
break;
}
}
cout<<scoreLine<<" "<<count<<endl;
for (int i = 0; i < count; ++i)
{
cout<<v[i][0]<<" "<<v[i][1]<<endl;
}
return 0;
}
#include
#include
#include
#include
using namespace std;
struct Person
{
int number;//输入次序
string name;
int year;
int month;
int day;
};
bool cmp(Person p1,Person p2){
if (p1.year != p2.year)
{
return p1.year < p2.year;
}else{
if (p1.month != p2.month)
{
return p1.month < p2.month;
}else{
if (p1.day != p2.day)
{
return p1.day < p2.day;
}else{
return p1.number > p2.number;
}
}
}
}
int main(int argc, char const *argv[])
{
int n;
cin >> n;
vector<Person> v(n);
for (int i = 0; i < n; ++i)
{
v[i].number = i + 1;
cin>>v[i].name;
cin>>v[i].year;
cin>>v[i].month;
cin>>v[i].day;
}
sort(v.begin(),v.end(),cmp);
for (int i = 0; i < n; ++i)
{
cout<<v[i].name<<endl;
}
return 0;
}
#include
#include
#include
#include
using namespace std;
//自定义排序函数,这一步非常巧妙,假设a=321,b=32;a+b=32132,b+a=32321这样下面sort排下来就是32>321避免出现32132>32321的情况
/*如果这样写:
bool cmp(string a,string b){
return a>b;
会发生321>32的情况进而会有32132>32321,具体原因是字符串自己的关系运算是这样设定的
}*/
bool cmp(string a, string b){
return (a + b) > (b + a);
}
int main(int argc, char const *argv[])
{
int n;
cin >> n;
vector<string> v(n);
for (int i = 0; i < n; ++i)
{
cin>>v[i];
}
sort(v.begin(),v.end(),cmp);
string s = "";
for (int i = 0; i < n; ++i)
{
s += v[i];
}
cout<<s<<endl;
return 0;
}
#include
using namespace std;
long long n,k,a[5000010];
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
nth_element(a,a+k,a+n);//使第k小整数就位
printf("%d",a[k]);//调用第k小整数
}
#include
#include
#include
#include
#include
#include
using namespace std;
bool cmp(vector<int> a,vector<int> b){
return a[2] < b[2];
}
int main(int argc, char const *argv[])
{
int n;
cin>>n;
vector< vector<int> > v(n,vector<int>(3));
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < 3; ++j)
{
cin>>v[i][j];
}
}
sort(v.begin(),v.end(),cmp);
double distance= 0.0;
for (int i = 0; i < n - 1; ++i)
{
distance += sqrt(pow(v[i][0] - v[i + 1][0],2) + pow(v[i][1] - v[i + 1][1],2) + pow(v[i][2] - v[i + 1][2],2));
}
/*
setprecision是指设置输出精度,当没有
cout<
cout<<fixed<<setprecision(3)<<distance<<endl;
return 0;
}