운영진: 임의로 문제들과 스탠딩, 에디토리얼 링크를 추가합니다. ^^ [문제들과 스탠딩 보기] [에디토리얼 보기]
A번 소스코드.
[spoiler="A번 소스코드 보기"]
#include
#include
#include
using namespace std;
struct stick {
int pos;
int state;
stick(int a = 0, int b = 0) : pos(a), state(b) {}
bool operator < (const stick &a) const {
if (pos == a.pos) return state > a.state;
return pos < a.pos;
}
};
int main() {
int n;
scanf("%d", &n);
vector a(2 * n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i * 2].pos); a[i * 2].state = 0;
scanf("%d", &a[i * 2 + 1].pos); a[i * 2 + 1].state = 1;
}
sort(a.begin(), a.end());
n = n * 2;
int now = 0, ret = 0;
for (int i = 0; i < n; i++) {
if (a[i].state == 0) now++; else now--;
ret >?= now;
}
printf("%d\n", ret);
}
[/spoiler]
B번 소스코드.
[spoiler="B번 소스코드 보기"]
#include
#include
using namespace std;
int main() {
int n, a, b;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d/%d", &a, &b);
printf("case %d: [", i + 1);
while (true) {
if (a % b == 0) {
printf("%d,", a / b - 1);
break;
}
if (a < 0) {
printf("%d,", a / b - 1);
a -= (a / b - 1) * b;
swap(a, b);
} else {
printf("%d,", a / b);
a = a % b;
swap(a, b);
}
}
printf("1]\n");
}
}
[/spoiler]
C번 소스코드.
[spoiler="C번 소스코드 보기."]
#include
#include
using namespace std;
int main() {
int n, ret;
while (scanf("%d", &n) == 1) {
ret = 0;
/* 문제에 n 제한이 없어서 선언을 이렇게.. /
vector > a(n);
vector c(n, 0), t(n);
for (int i = 0; i < n; i++) {
a[i].resize(n);
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
}
/ Prim algorithm /
c[0] = 1;
for (int i = 0; i < n; i++) t[i] = a[0][i];
for (int i = 0; i < n - 1; i++) {
int now = 2147483647, p;
for (int j = 0; j < n; j++) {
if (c[j] == 0 && t[j] != -1 && t[j] < now) {
now = t[j];
p = j;
}
}
ret += now;
c[p] = 1;
for (int j = 0; j < n; j++) {
if (a[p][j] == -1) continue;
if (t[j] == -1 || t[j] > a[p][j]) t[j] = a[p][j];
}
}
/ End of Prim algorithm */
printf("%d\n", ret);
}
}
[/spoiler]
D번 소스코드.
[spoiler="D번 소스코드 보기."]
#include
#include
using namespace std;
int main() {
int n, m;
while (scanf("%d %d", &n, &m) == 2) {
vector > a(n, vector (n, 0));
vector b(m);
for (int i = 0; i < m; i++)
scanf("%d", &b[i]);
bool sw = true;
if (n * (n - 1) != m * 2) sw = false;
for (int i = 0; i < m; i++) {
int q = b[i], w = b[(i + 1) % m];
if (a[q][w] != 0) sw = false; else a[q][w] = 1;
if (a[w][q] != 0) sw = false; else a[w][q] = 1;
}
if (sw) printf("Accepted\n"); else printf("Wrong Answer\n");
}
}
[/spoiler]
E번 소스코드.
[spoiler="E번 소스코드 보기."]
#include
using namespace std;
int a[100][100];
int b[100][100];
int main() {
int n;
while (scanf("%d", &n) == 1) {
if (n == 0) break;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int mm = 0;
if (i != 0) {
mm = b[i - 1][j];
if (j != 0) mm >?= b[i - 1][j - 1];
if (j != n - 1) mm >?= b[i - 1][j + 1];
}
b[i][j] = mm + a[i][j];
}
}
int ret = b[n - 1][0];
for (int i = 1; i < n; i++)
ret >?= b[n - 1][i];
printf("%d\n", ret);
}
}
[/spoiler]
astein
운영진: 임의로 문제들과 스탠딩, 에디토리얼 링크를 추가합니다. ^^ [문제들과 스탠딩 보기] [에디토리얼 보기] a(2 * n); > a(n); c(n, 0), t(n); Prim algorithm / > a(n, vector (n, 0)); b(m);
A번 소스코드.
[spoiler="A번 소스코드 보기"]
#include
#include
#include
using namespace std;
struct stick {
int pos;
int state;
stick(int a = 0, int b = 0) : pos(a), state(b) {}
bool operator < (const stick &a) const {
if (pos == a.pos) return state > a.state;
return pos < a.pos;
}
};
int main() {
int n;
scanf("%d", &n);
vector
for (int i = 0; i < n; i++) {
scanf("%d", &a[i * 2].pos); a[i * 2].state = 0;
scanf("%d", &a[i * 2 + 1].pos); a[i * 2 + 1].state = 1;
}
sort(a.begin(), a.end());
n = n * 2;
int now = 0, ret = 0;
for (int i = 0; i < n; i++) {
if (a[i].state == 0) now++; else now--;
ret >?= now;
}
printf("%d\n", ret);
}
[/spoiler]
B번 소스코드.
[spoiler="B번 소스코드 보기"]
#include
#include
using namespace std;
int main() {
int n, a, b;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d/%d", &a, &b);
printf("case %d: [", i + 1);
while (true) {
if (a % b == 0) {
printf("%d,", a / b - 1);
break;
}
if (a < 0) {
printf("%d,", a / b - 1);
a -= (a / b - 1) * b;
swap(a, b);
} else {
printf("%d,", a / b);
a = a % b;
swap(a, b);
}
}
printf("1]\n");
}
}
[/spoiler]
C번 소스코드.
[spoiler="C번 소스코드 보기."]
#include
#include
using namespace std;
int main() {
int n, ret;
while (scanf("%d", &n) == 1) {
ret = 0;
/* 문제에 n 제한이 없어서 선언을 이렇게.. /
vector
vector
for (int i = 0; i < n; i++) {
a[i].resize(n);
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
}
/
c[0] = 1;
for (int i = 0; i < n; i++) t[i] = a[0][i];
for (int i = 0; i < n - 1; i++) {
int now = 2147483647, p;
for (int j = 0; j < n; j++) {
if (c[j] == 0 && t[j] != -1 && t[j] < now) {
now = t[j];
p = j;
}
}
ret += now;
c[p] = 1;
for (int j = 0; j < n; j++) {
if (a[p][j] == -1) continue;
if (t[j] == -1 || t[j] > a[p][j]) t[j] = a[p][j];
}
}
/ End of Prim algorithm */
printf("%d\n", ret);
}
}
[/spoiler]
D번 소스코드.
[spoiler="D번 소스코드 보기."]
#include
#include
using namespace std;
int main() {
int n, m;
while (scanf("%d %d", &n, &m) == 2) {
vector
vector
for (int i = 0; i < m; i++)
scanf("%d", &b[i]);
bool sw = true;
if (n * (n - 1) != m * 2) sw = false;
for (int i = 0; i < m; i++) {
int q = b[i], w = b[(i + 1) % m];
if (a[q][w] != 0) sw = false; else a[q][w] = 1;
if (a[w][q] != 0) sw = false; else a[w][q] = 1;
}
if (sw) printf("Accepted\n"); else printf("Wrong Answer\n");
}
}
[/spoiler]
E번 소스코드.
[spoiler="E번 소스코드 보기."]
#include
using namespace std;
int a[100][100];
int b[100][100];
int main() {
int n;
while (scanf("%d", &n) == 1) {
if (n == 0) break;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int mm = 0;
if (i != 0) {
mm = b[i - 1][j];
if (j != 0) mm >?= b[i - 1][j - 1];
if (j != n - 1) mm >?= b[i - 1][j + 1];
}
b[i][j] = mm + a[i][j];
}
}
int ret = b[n - 1][0];
for (int i = 1; i < n; i++)
ret >?= b[n - 1][i];
printf("%d\n", ret);
}
}
[/spoiler]
17년 전