※. 순열에 비어있는 수가 있다면 확실하게 잃어버린 요소 [1,3,4] -> 2
※.비어있는 수를 다 더한다음 더한 값이 s보다 작으면 뒤의 요소들을 더한다.
(요소들의 input값이 50까지, 요소값은 51이후부터의 합이 1000이 되기 전까지 올 수 있다.)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while(T --> 0) {
boolean answer = false;
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int m = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
int[] arr = new int[51];
int max = 0;
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < m; i++) {
int a = Integer.parseInt(st.nextToken());
arr[a]++;
max = Math.max(max, a);
}
int sum = 0;
for(int i = 1; i < max; i++) {
if(arr[i] == 0) sum += i;
}
if(sum == s)
answer = true;
else if(sum < s) {
for(int i = max+1; i <= 1000; i++) {
sum += i;
if(sum == s)
answer = true;
else if(sum > s)
break;
}
}
if(answer)
sb.append("YES").append('\n');
else
sb.append("NO").append('\n');
}
System.out.println(sb);
}
}
'코드포스' 카테고리의 다른 글
[Hello 2023] B. MKnez's ConstructiveForces Task (0) | 2023.01.04 |
---|---|
[Codeforces Round #835 (Div. 4)] F. Quests (0) | 2022.12.16 |
[Codeforces Round #827 (Div. 4)] F. Smaller (0) | 2022.10.14 |
[Codeforces Round #827 (Div. 4)] D. Coprime (0) | 2022.10.14 |
[Codeforces Round #817 (Div. 4)] G. Even-Odd XOR (0) | 2022.10.06 |