알고리즘/구현 및 시뮬레이션

[B12000] - Circular Barn(Bronze)

tongnamuu 2018. 9. 26. 21:41

https://www.acmicpc.net/problem/12000

원형으로 돌기 때문에 index의 처리만 주의해주면 된다.


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
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n;
    cin >> n;
    vector<int>r(n);
    vector<int>check(n);
    for (int re = 0; re < n; re++)
    {
        check[re] = 0;
    }
    for (int i = 0; i < n; i++)
        cin >> r[i];
    int ans = 2147483647;
    int sum;
    for (int i = 0; i < n; i++)
    {
        for (int re = 0; re < n; re++)
        {
            check[re] = 0;
        }
        sum = 0;
        check[i] = 1;
        for (int k = 1; k < n; k++)
        {
            int index1 = i + k;
            while (index1 >= n)
                index1 -= n;
            if (check[index1]==0)
            {
                sum += k * r[index1];
                check[index1] = 1;
            }
        }
        if (sum < ans)
            ans = sum;
    }
    cout << ans << '\n';
}
cs