2024年码蹄杯省赛本科组A题 开篇签到 题型:排序 难度:白银

19 阅读1分钟

码题集OJ-开篇签到 (matiji.net)

这道题如果我们只是排完升序之后输出第二个数,那么就会WA:

#include<bits/stdc++.h> 
using namespace std;
const int N=1e5+10;
int a[N];
int main( )
{
    int n;cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];
    sort(a,a+n);
    cout<<a[1];
return 0;
}

image.png

image.png

因为有这样的数据:

1 3 2 5 1

这样排完之后就是:

1 1 2 3 5

此时正确的应该输出2,但是按照上面的代码会输出1.

正确的代码:

#include<bits/stdc++.h> 
using namespace std;
const int N=1e5+10;
int a[N];
int main( )
{
    int n;cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];
    sort(a,a+n);

    for(int i=1;i<n;i++)
    {
        if(a[i]!=a[i-1])
        {
            cout<<a[i];
            break;
        }
    }
return 0;
}

image.png