问题标题: 酷町堂:1555 微信运动

0
0
已解决
丁博扬
丁博扬
中级天翼
中级天翼

1555   微信运动                                                         经验值:0

题目描述 Description

随着微信的普及,微信里应用也逐渐被人们接触并使用。微信运动就是其中一个被广泛使用的应用程序。在这里你可以看到所有微信好友的每天的运动步数,并能看见自己在好友中排名多少位。现在假设有n个好友,自己在微信运动里排倒数第k位(相同步数的只计算一次),请显示他的运动步数。k<=1000,好友数小于10000,运动步数小于30000。

输入描述 Input Description

第一行为n和k; 第二行开始为n个正整数的值,整数间用空格隔开。

输出描述 Output Description

第k个最小整数的值;若无解,则输出“NO RESULT”。

样例输入 Sample Input

10 3 1 3 3 7 2 5 1 2 4 6

样例输出 Sample Output

3

 

80分代码:

  • #include<iostream>
  • using namespace std;
  • int a[11000],b[31000],cnt;
  • int main(){
  • int n,m;
  • cin>>n>>m;
  • for(int i=1;i<=n;i++){
  • cin>>a[i];
  • b[a[i]]++;
  • }
  • if(m>n){
  • cout<<"NO RESULT";
  • }
  • if(m<=0){
  • cout<<"NO RESULT";
  • }
  • for(int i=0;i<=30000;i++){
  • if(b[i]!=0){
  • cnt++;
  • }
  • if(cnt==m){
  • cout<<i;
  • break;
  • }
  • }
  • return 0;
  • }

0
已采纳
许致远
许致远
中级守护
中级守护
  • int a[10010],cnt=0,t;
  • int main(){
  • int n,k;
  • cin>>n>>k;
  • for(int i=1;i<=n;i++) {
  • cin>>a[i];
  • }
  • for(int i=1;i<=n-1;i++){
  • for(int j=i+1;j<=n;j++){
  • if(a[i]==a[j])
  • a[j]=2100000000;
  • }
  • }
  • for(int i=1;i<=n-1;i++){
  • for(int j=i+1;j<=n;j++){
  • if(a[i]>a[j]){
  • t=a[i];
  • a[i]=a[j];
  • a[j]=t;
  • }
  • }
  • }
  • for(int i=1;i<=n;i++){
  • if(a[i]!=2100000000){
  • cnt++;
  • }
  • }
  • if(cnt-k>0) cout<<a[k];
  • else cout<<"NO RESULT";
我要回答