2019-11-17
11:30:34
#include<iostream> using namespace std; int n,a[1000001]; void qsort(int l,int r){ int mid = a[(l+r)/2];//中间数 int i = l,j = r; do{ while(a[i]<mid) i++; while(a[j]>mid) j--; if(i<=j){ swap(a[i],a[j]); i++; j--; } } while(i<=j);//这里注意要有= if(l<j) qsort(l,j);//递归搜索左半部分 if(i<r) qsort(i,r); //递归搜索右半部份 } int main(){ cin>>n; for(int i=1;i<=n;++i) cin>>a[i]; qsort(1,n); for(int i=1;i<n;++i) cout<<a[i]<<" "; return 0; }
#include<bits/stdc++.h> using namespace std; set<int> s; int a[105]; int main(){ int n; cin>>n; for(int i=0;i<n;++i){ cin>>a[i]; s.insert(a[i]); } cout<<s.size()<<endl; while(!s.empty()){ cout<<*s.begin()<<" "; s.erase(s.begin()); } return 0; }
万能头文件:
解法1:
#include<bits/stdc++.h> using namespace std; int n,m,i,f,k[5001],s[5001],sub[5001]; bool cmp(int a,int b){ if(s[a] == s[b]){ return k[a]<k[b]; } return s[a] > s[b]; } int main(){ cin>>n>>m; for(int i = 1;i<=n;++i){ cin>>k[sub[i]=i]>>s[i]; } sort(sub+1,sub+n+1,cmp); f = s[sub[int(m*1.5)]];//分数线 for(i=1;s[sub[i]]>=f;++i); cout<<f<<" "<<i-1<<endl; for(i=1;s[sub[i]]>=f;++i){ cout<<k[sub[i]]<<" "<<s[sub[i]]<<endl; } }
比较100位的数字,属于高精度。直接上字符串
#include<bits/stdc++.h> #define f(a,b,c) for(int a=b;a<=c;a++) #define f1(a,b,c) for(int a=b;a>=c;i--) using namespace std; bool cmp(pair<int,string> a,pair<int,string> b){ if(a.second.size() != b.second.size()){ return a.second.size() > b.second.size(); }else return a.second>b.second; } int main(){ pair<int,string> t[21]; int n; cin>>n; f(i,1,n) cin>>t[i].second,t[i].first = i; sort(t+1,t+n+1,cmp); cout<<t[1].first<<" "<<t[1].second; return 0; }