※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 4304번 문제인 Antiarithmetic?이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/4304
범위 내의 서로 다른 정수로 구성된, 순서대로 등차수열을 이루는 모든 세 수의 쌍에 대하여 해당 쌍들이 주어진 순서대로 주어지는지 하나하나 확인해 문제를 해결하자.
이는 각 수가 수열의 몇 번째 항으로 등장하는지 저장하는 배열을 준비하는 것으로 빠르게 해낼 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int N;
int A[10001];
void solve() {
for (int i = 0; i < N; i++) {
int x; cin >> x;
A[x] = i;
}
for (int i = 0; i < N; i++) {
for (int g = 1; i - g > -1 && i + g < N; g++) {
int sgn = 0;
if (A[i - g] < A[i]) sgn ^= 1;
if (A[i + g] < A[i]) sgn ^= 1;
if (sgn) {
cout << "no\n";
return;
}
}
}
cout << "yes\n";
}
string s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s;
while (s.back() == ':') {
s.pop_back();
N = stoi(s);
solve();
cin >> s;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 18066 // C++] Move & Meet (7) | 2024.10.14 |
---|---|
[BOJ 13021 // C++] 공 색칠하기 (1) | 2024.10.11 |
[BOJ 30814 // C++] Watchmen (1) | 2024.10.08 |
[BOJ 32466 // C++] Jenga Game (2) | 2024.10.07 |
[BOJ 12051 // C++] Dynamic Grid (Large) (0) | 2024.10.04 |