new file: P17311.cpp
This commit is contained in:
1 parent
21a358845c
commit
b600661bcc
3 files changed
+120
-4
No files matched your search
+43
@@ -0,0 +1,43 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
int t;
|
||||
int n, k;
|
||||
int a[200005];
|
||||
int main() {
|
||||
scanf("%d", &t);
|
||||
while (t--) {
|
||||
scanf("%d%d", &n, &k);
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
scanf("%d", &a[i]);
|
||||
}
|
||||
sort(a + 1, a + n + 1);
|
||||
if (k == 1) {
|
||||
if (a[1] == 1)
|
||||
printf("-1\n");
|
||||
else
|
||||
printf("0\n");
|
||||
continue;
|
||||
}
|
||||
long long ans = 0;
|
||||
int exp = 1;
|
||||
for (int i = 1; i <= n && a[i] <= k; i++)
|
||||
if (a[i] == k)
|
||||
ans++, a[i]--;
|
||||
bool flag = 0;
|
||||
for (int i = 1; i <= n; i++) {
|
||||
if (a[i] >= exp) {
|
||||
ans += a[i] - exp, exp++;
|
||||
if (exp == k) {
|
||||
printf("%lld\n", ans);
|
||||
flag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
printf("-1\n");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user