250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#1939#중량제한
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#boj#12755
- 백준#boj#16932#모양만들기
- 백준#BOJ#2615#오목
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[codeforce Global Round 11]A번 본문
codeforces.com/contest/1427/problem/A
문제 : 배열 a 가 주어지고 a를 재배열해서 b 배열을 만든다. 이때 조건은 처음부터 순차적으로 더했을때 0이 생기면 안되게 만들어야 된다.
해설 :
1) a의 원소들을 전부 더했을때 0이면 "NO"
2) a의 원소들을 전부 더했을때 0이 아니면 "YES"
2-1)이때 다 더했을때 0보다 크면 내림차순으로 정렬해주고
2-2)다 더했을때 0보다 작으면 오름차순으로 정렬해 주면 된다.
=>이렇게 해주면 중간에 0이 발생하는 구간이 생기지 않는다.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
void solve();
bool compare(const int a, const int b);
int main()
{
int t;
cin >> t;
while (t--)
solve();
}
void solve()
{
int n, sum=0,arr[55];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
sum += arr[i];
}
if (sum == 0) {
cout << "NO\n";
return;
}
cout << "YES\n";
if (sum > 0)
sort(arr, arr + n, compare);
else
sort(arr, arr + n);
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << "\n";
}
bool compare(const int a, const int b)
{
return a > b;
}
'알고리즘,SQL > codeforce 문제' 카테고리의 다른 글
Codeforces Round #688 (Div. 2) : A번 (0) | 2020.12.05 |
---|---|
Codeforces Raif Round 1 (Div. 1 + Div. 2) : C번 (0) | 2020.10.21 |
Codeforces Raif Round 1 (Div. 1 + Div. 2) : B번 (0) | 2020.10.21 |
Codeforces Raif Round 1 (Div. 1 + Div. 2) : A번 (0) | 2020.10.21 |
[codeforce Global Round 11]B번 (0) | 2020.10.11 |