N개의 숫자가 차있는 배열 A,B가 주어진다.
한 operation는 배열 A에 있는 원소 하나를 +2하고 배열 B에있는 원소 하나를 +1한다.
operation을 무한히 할 때 두 배열이 완전 일치하는지 판단하는 문제다.
배열A의 원소들의 합을 $q$, 배열 B의 원소들의 합을 $p$라 할 때 $q+2x=p+x$가 성립해야 한다.
즉, $q-p < 0$이면 모순이다.
또한 배열A의 원소 $a_{n}$은 결국 배열B의 원소 $b_{n}$과 동일해 져야 한다.
각각의 원소들을 가능한 동일하도록 맞춰주고 맞춰주는데 드는 횟수가
배열B가 더 작거나 같으면 성립한다.
#include <cstdio>
typedef long long ll;
int N;
int a[10001];
int b[10001];
ll p, q;
int main(){
scanf("%d", &N);
for (int n = 0; n < N; n++) scanf("%d", &a[n]), p += a[n];
for (int n = 0; n < N; n++) scanf("%d", &b[n]), q += b[n];
if (q - p < 0) return !printf("No\n");
ll sa = 0, sb = 0;
for (int n = 0; n < N; n++){
if (a[n] > b[n]){
sb += a[n] - b[n];
}
else if (a[n] < b[n]){
int t = (b[n] - a[n] + 1) >> 1;
sa += t;
sb += a[n] + 2 * t - b[n];
}
}
if (sa >= sb) printf("Yes\n");
else printf("No\n");
return 0;
}
| cs |
댓글 없음:
댓글 쓰기