#include <bits/stdc++.h>
using namespace std;
using LL = long long;
#define e1 first
#define e2 second
#define pb push_back
#define OUT(x) {cout << x << "\n"; exit(0); }
#define TCOUT(x) {cout << x << "\n"; return; }
#define FOR(i, l, r) for(int i = (l); i <= (r); ++i)
#define rep(i, l, r) for(int i = (l); i < (r); ++i)
#define boost {ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); }
#define sz(x) int(x.size())
#define trav(a, x) for(auto& a : x)
#define all(x) begin(x), end(x)
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
/*#include <atcoder/modint>
using namespace atcoder;
using mint = modint998244353;
vector <mint> fac, inv;
mint binom(int n, int k) {
if (n < k || n < 0) return 0;
return fac[n] * inv[k] * inv[n-k];
}
void prep(int N) {
fac.resize(N+1, 1); inv.resize(N+1, 1);
for (int i=1; i<=N; ++i) fac[i] = fac[i-1] * i;
inv[N] = fac[N].inv();
for (int i=N-1; i>0; --i) inv[i] = inv[i+1] * (i + 1);
}*/
mt19937_64 rng(time(0));
int random(int l, int r) {
return uniform_int_distribution<int>(l, r)(rng);
}
#ifdef DEBUG
template<class T> int size(T &&x) {
return int(x.size());
}
template<class A, class B> ostream& operator<<(ostream &out, const pair<A, B> &p) {
return out << '(' << p.first << ", " << p.second << ')';
}
template<class T> auto operator<<(ostream &out, T &&x) -> decltype(x.begin(), out) {
out << '{';
for(auto it = x.begin(); it != x.end(); ++it)
out << *it << (it == prev(x.end()) ? "" : ", ");
return out << '}';
}
void dump() {}
template<class T, class... Args> void dump(T &&x, Args... args) {
cerr << x << "; ";
dump(args...);
}
#endif
#ifdef DEBUG
struct Nl{~Nl(){cerr << '\n';}};
# define debug(x...) cerr << (strcmp(#x, "") ? #x ": " : ""), dump(x), Nl(), cerr << ""
#else
# define debug(...) 0 && cerr
#endif
const int maxn = 1000100;
//Did you REAALLY consider sample tests?
void brut() {
}
void wzo() {
int n, k;
cin >> n >> k;
vi vec(n);
rep(i, 0, n) cin >> vec[i];
sort(all(vec), greater<int>());
int iter = k - 1;
while (iter < n && vec[iter + 1] == vec[k - 1]) ++iter;
debug(vec);
debug(iter);
cout << iter + 1 << "\n";
}
bool TEST = 0;
int main() {
boost;
if (!TEST) {
wzo();
}
else {
int testcount;
cin >> testcount;
FOR(_z, 1, testcount) {
if (_z % 100 == 0) cout << "OK: " << _z << "\n";
//TEST GENERATION
//END TEST GENERATION
/*auto model = wzo(s);
auto slow = brut(s);
if (model != slow) {
debug(s);
debug(model);
debug(slow);
OUT("WA");
}*/
}
}
}
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 103 104 105 106 107 108 109 | #include <bits/stdc++.h> using namespace std; using LL = long long; #define e1 first #define e2 second #define pb push_back #define OUT(x) {cout << x << "\n"; exit(0); } #define TCOUT(x) {cout << x << "\n"; return; } #define FOR(i, l, r) for(int i = (l); i <= (r); ++i) #define rep(i, l, r) for(int i = (l); i < (r); ++i) #define boost {ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } #define sz(x) int(x.size()) #define trav(a, x) for(auto& a : x) #define all(x) begin(x), end(x) typedef long long ll; typedef pair <int, int> pii; typedef pair <ll, ll> pll; typedef vector<int> vi; typedef vector<ll> vll; /*#include <atcoder/modint> using namespace atcoder; using mint = modint998244353; vector <mint> fac, inv; mint binom(int n, int k) { if (n < k || n < 0) return 0; return fac[n] * inv[k] * inv[n-k]; } void prep(int N) { fac.resize(N+1, 1); inv.resize(N+1, 1); for (int i=1; i<=N; ++i) fac[i] = fac[i-1] * i; inv[N] = fac[N].inv(); for (int i=N-1; i>0; --i) inv[i] = inv[i+1] * (i + 1); }*/ mt19937_64 rng(time(0)); int random(int l, int r) { return uniform_int_distribution<int>(l, r)(rng); } #ifdef DEBUG template<class T> int size(T &&x) { return int(x.size()); } template<class A, class B> ostream& operator<<(ostream &out, const pair<A, B> &p) { return out << '(' << p.first << ", " << p.second << ')'; } template<class T> auto operator<<(ostream &out, T &&x) -> decltype(x.begin(), out) { out << '{'; for(auto it = x.begin(); it != x.end(); ++it) out << *it << (it == prev(x.end()) ? "" : ", "); return out << '}'; } void dump() {} template<class T, class... Args> void dump(T &&x, Args... args) { cerr << x << "; "; dump(args...); } #endif #ifdef DEBUG struct Nl{~Nl(){cerr << '\n';}}; # define debug(x...) cerr << (strcmp(#x, "") ? #x ": " : ""), dump(x), Nl(), cerr << "" #else # define debug(...) 0 && cerr #endif const int maxn = 1000100; //Did you REAALLY consider sample tests? void brut() { } void wzo() { int n, k; cin >> n >> k; vi vec(n); rep(i, 0, n) cin >> vec[i]; sort(all(vec), greater<int>()); int iter = k - 1; while (iter < n && vec[iter + 1] == vec[k - 1]) ++iter; debug(vec); debug(iter); cout << iter + 1 << "\n"; } bool TEST = 0; int main() { boost; if (!TEST) { wzo(); } else { int testcount; cin >> testcount; FOR(_z, 1, testcount) { if (_z % 100 == 0) cout << "OK: " << _z << "\n"; //TEST GENERATION //END TEST GENERATION /*auto model = wzo(s); auto slow = brut(s); if (model != slow) { debug(s); debug(model); debug(slow); OUT("WA"); }*/ } } } |
English