문제

https://codeforces.com/problemset/problem/1409/C

걸린 시간

02 : 07 : 54

풀이

C++

#include <bits/stdc++.h>
#define INF 1e9
typedef long long ll;
using namespace std;

int n, x, y;
vector<int> A, result;
set<int> a;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int tc;
    cin >> tc;
    while(tc--){
        cin >> n >> x >> y;
        int minA = INF;
        for(int i = 1; i <= 50; i++){
            for(int j = 1; j <= 50; j++){
                A.clear();
                a.clear();
                a.insert(x); a.insert(y);
                int inc = j;
                while(a.size() != n){
                    a.insert(inc);
                    inc += i;
                }
                for(auto it = a.begin(); it != a.end(); it++)
                    A.push_back(*it);
                // 인접한 원소간의 차이가 모두 같은지 검사
                bool diff = true;
                int last = A[1]-A[0];
                for(int k = 2; k < n; k++)
                    if(last != A[k]-A[k-1])
                        diff = false;
                if(!diff) continue;
                // 가장 작은 배열 A의 최대값을 갱신
                int maxA = A[n-1];
                if(minA > maxA){
                    minA = maxA;
                    result = A;
                }
            }
        }
        for(int i = 0; i < result.size(); i++)
            cout << result[i] << " ";
        cout << "\n";
    }
    return 0;
}

몇 가지 예제들을 손으로 직접 풀어보면서 약수와 관련된 규칙이 있는 것 같아 이를 구현했지만 예로 주어진 테스트케이스만 정상적으로 돌아갈 뿐, 모든 경우에 대해 올바른 답을 출력하지 못했다. 그래도 알고리즘엔 문제가 없어 보여 여러 가지 반례를 확인하다 보니 모든 경우를 시도하도록 하면 해결할 수 있을 것 같아 수정했고, 1초 안으로 아슬아슬하게 통과했다.

문제의 채점 방식이 조금 특이했는데 출력값을 그대로 비교하는 것이 아닌 문제의 조건에 맞는 추가적인 연산을 한 번 더 진행한다. 분명 출력 순서는 상관이 없다고 설명되어 있지만 이런 채점 방식을 처음 접해보았기 때문에 예제 출력과 순서가 달라도 과연 올바르게 채점이 될 까 의심했었다.

'Codeforces' 카테고리의 다른 글

Codeforces 1419D1 Sage's Birthday (easy version)  (0) 2020.09.21
Codeforces #1419A Digit Game  (0) 2020.09.20
Codeforces #1409B Minimum Product  (0) 2020.09.18
Codeforces #1399B Gifts Fixing  (0) 2020.09.18
Codeforces #1399A Remove Smallest  (0) 2020.09.18

댓글