#include <bits/stdc++.h>
#include <iostream>
//#define TEST
using namespace std;
#define FAST ios_base::sync_with_stdio(0) ;cin.tie(0);
#define pb push_back
#define mp make_pair
#define fi(a, b) for(int i=a; i<=b; i++)
#define fj(a, b) for(int j=a; j<=b; j++)
#define fo(a, b) for(int o=a; o<=b; o++)
#define fdi(a, b) for(int i=a; i>=b; i--)
#define fdj(a, b) for(int j=a; j>=b; j--)
#define fdo(a, b) for(int o=a; o>=b; o--)
#define sz(x) (int)x.size()
#define init_v( tab, n ) fo(1, n ) tab.pb(0)
typedef long long ll;
typedef long double ld;
typedef vector <int> vi;
typedef pair <int, int> pii;
typedef vector <pii> vpii;
typedef pair <ll, ll> pll;
typedef vector <pll> vpll;
typedef vector <ll> vll;
template <typename T> ostream& operator<<( ostream& os, vector<T> v)
{
fi(0, sz(v) - 1) os << v[i] << " ";
return os;
}
template <typename A, typename B> ostream& operator <<(ostream& os, pair< A, B> p)
{
os << "(" << p.first << ", " << p.second << ")";
return os;
}
template <typename T> ostream& operator<<( ostream& os, set<T> t)
{
for (auto z : t)
{
os << z << " ";
}
return os;
}
template <typename T1, typename T2> ostream& operator <<(ostream& os, map< T1, T2> t)
{
cerr << endl;
for (auto z : t)
{
os << "\t" << z.first << " -> " << z.second << endl;
}
return os;
}
#ifdef TEST
#define dbg(x) {cerr << __LINE__ << "\t" << #x << ": " << x << endl;}
#define dbg0(x, n) {cerr << __LINE__ << "\t" << #x << ": "; for (int ABC = 0; ABC < n; ABC++) cerr << x[ABC] << ' '; cerr << endl;}
#else
#define dbg(x) ;
#define dbg0(x, n) ;
#endif
void przekierowanie()
{
#ifdef TEST
freopen( "input.txt", "r", stdin );
freopen( "output.txt", "w", stdout );
#endif
}
int main()
{
FAST
przekierowanie();
ll N, K;
cin >> N >> K;
auto x = N;
vll tab;
while ( x --)
{
ll pom;
cin >> pom;
tab.pb( pom );
}
sort( tab.begin(), tab.end(), [](ll a, ll b){ return b < a;});
// for( auto x: tab )
// cout << x << " ";cout << endl;
auto p1 = tab[ K - 1];
auto t1 = K - 1;
ll delta = 0;
while( t1 + delta < N && p1 == tab[ t1 + delta ] )
delta ++;
cout << t1 + delta << '\n';
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #include <bits/stdc++.h> #include <iostream> //#define TEST using namespace std; #define FAST ios_base::sync_with_stdio(0) ;cin.tie(0); #define pb push_back #define mp make_pair #define fi(a, b) for(int i=a; i<=b; i++) #define fj(a, b) for(int j=a; j<=b; j++) #define fo(a, b) for(int o=a; o<=b; o++) #define fdi(a, b) for(int i=a; i>=b; i--) #define fdj(a, b) for(int j=a; j>=b; j--) #define fdo(a, b) for(int o=a; o>=b; o--) #define sz(x) (int)x.size() #define init_v( tab, n ) fo(1, n ) tab.pb(0) typedef long long ll; typedef long double ld; typedef vector <int> vi; typedef pair <int, int> pii; typedef vector <pii> vpii; typedef pair <ll, ll> pll; typedef vector <pll> vpll; typedef vector <ll> vll; template <typename T> ostream& operator<<( ostream& os, vector<T> v) { fi(0, sz(v) - 1) os << v[i] << " "; return os; } template <typename A, typename B> ostream& operator <<(ostream& os, pair< A, B> p) { os << "(" << p.first << ", " << p.second << ")"; return os; } template <typename T> ostream& operator<<( ostream& os, set<T> t) { for (auto z : t) { os << z << " "; } return os; } template <typename T1, typename T2> ostream& operator <<(ostream& os, map< T1, T2> t) { cerr << endl; for (auto z : t) { os << "\t" << z.first << " -> " << z.second << endl; } return os; } #ifdef TEST #define dbg(x) {cerr << __LINE__ << "\t" << #x << ": " << x << endl;} #define dbg0(x, n) {cerr << __LINE__ << "\t" << #x << ": "; for (int ABC = 0; ABC < n; ABC++) cerr << x[ABC] << ' '; cerr << endl;} #else #define dbg(x) ; #define dbg0(x, n) ; #endif void przekierowanie() { #ifdef TEST freopen( "input.txt", "r", stdin ); freopen( "output.txt", "w", stdout ); #endif } int main() { FAST przekierowanie(); ll N, K; cin >> N >> K; auto x = N; vll tab; while ( x --) { ll pom; cin >> pom; tab.pb( pom ); } sort( tab.begin(), tab.end(), [](ll a, ll b){ return b < a;}); // for( auto x: tab ) // cout << x << " ";cout << endl; auto p1 = tab[ K - 1]; auto t1 = K - 1; ll delta = 0; while( t1 + delta < N && p1 == tab[ t1 + delta ] ) delta ++; cout << t1 + delta << '\n'; return 0; } |
English