-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Platinum V] Title: 축구 게임, Time: 396 ms, Memory: 2184 KB -BaekjoonHub
- Loading branch information
Showing
2 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# [Platinum V] 축구 게임 - 13560 | ||
|
||
[문제 링크](https://www.acmicpc.net/problem/13560) | ||
|
||
### 성능 요약 | ||
|
||
메모리: 2184 KB, 시간: 396 ms | ||
|
||
### 분류 | ||
|
||
그리디 알고리즘, 수학, 정렬 | ||
|
||
### 제출 일자 | ||
|
||
2024년 4월 16일 16:03:46 | ||
|
||
### 문제 설명 | ||
|
||
<p>축구는 지구에서 가장 인기있는 스포츠 중의 하나입니다. n 팀으로 이루어진 축구 리그가 있습니다. 하나의 팀은 다른 모든 팀과 정확히 한 번씩만 경기를 합니다. 그러므로, 각 팀은 n - 1 번의 경기를 하게 됩니다. 무승부는 승부차기를 하기 때문에 없습니다. 한 경기 후에 이긴 한 팀은 1 점을 얻게 되고, 진 팀은 0 점을 얻게 됩니다.</p> | ||
|
||
<p>베스트 팀 선정을 위해 경기 일정이 끝난 후에 각 팀은 리그 사무소에 획득한 점수를 보고하게 됩니다. 리그 사무소는 각 팀이 보고한 점수가 실수가 없는지 확실히 해두고 싶습니다. 즉, 보고한 점수가 유효한지 아닌지 알고 싶은 것이고, 이 말은 리그 룰에 따르는 경우 이 점수들을 각 팀에 할당하는 것이 가능해야 합니다.</p> | ||
|
||
<p>주어진 n 개의 정수들은 각 팀에서 보고한 점수들로 이 점수들이 유효한지 아닌지 알아내는 프로그램을 작성해야 합니다.</p> | ||
|
||
### 입력 | ||
|
||
<p>프로그램은 표준 입력에서 읽어야 합니다. 입력은 두 줄로 이루어져 있고, 첫째 줄은 하나의 정수 n (2 ≤ n ≤ 10,000) 이고, 팀의 개수를 의미합니다. 다음 줄은 각 팀에서 보고한 점수들입니다. 각 정수는 0 보다 같거나 크고 n - 1 보다 같거나 작습니다.</p> | ||
|
||
### 출력 | ||
|
||
<p>프로그램은 표준 출력에 써야 합니다. 보고한 점수들이 유효한 경우라면 1 을 출력하고, 그렇지 않으면 -1 을 출력합니다.</p> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#include <iostream> | ||
#include <algorithm> | ||
#include <vector> | ||
|
||
using namespace std; | ||
|
||
|
||
int main() { | ||
ios_base::sync_with_stdio(0); | ||
cin.tie(0); | ||
|
||
int n; | ||
vector<int> score; | ||
bool flag = true; | ||
cin >> n; | ||
|
||
int sum = 0; | ||
score.assign(n + 1,0); | ||
for (int i = 1; i <= n; i++) { | ||
cin >> score[i]; | ||
sum += score[i]; | ||
} | ||
if (sum != (n * (n-1)) / 2) { | ||
cout << -1; | ||
return 0; | ||
} | ||
|
||
sort(score.begin() + 1, score.end()); | ||
for (int i = 1; i <= n; i++) { | ||
if (score[i] > n - 1 || score[i] < 0) { | ||
flag = false; | ||
break; | ||
} | ||
for (int j = 0; j < n - score[i] - i; j++) { | ||
score[n - j]--; | ||
} | ||
sort(score.begin()+i+1, score.end()); | ||
} | ||
if (flag) cout << 1; | ||
else cout << -1; | ||
|
||
return 0; | ||
} | ||
|