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

해당문제는 알고리즘보다는 문제를 잘 읽고 예외처리를 잘해주면된다.

1. 먹기위해 집어든 튀김소보루는 제외!

2. 여러 사람이 동시에 소보루를 집는다면 번호가 작은 사람이 먼저잡는다(즉, 초당 여러사람이 잡을수가 있다.)


-> 따라서, 1,2번의 조건을 부여하면, 2중포문으로 시간을 초당진행되게하며, 그 초당시간내에 번호 작은 사람순으로 나누어 떨어지게 될때

total을 더한다. 

#include<iostream>

using namespace std;

#include<stack>

int n, s,m,total,eat;

int cnt = 0, res = 0,cnt2=0;

int people[100050];

int main()

{

cin.tie(0);

ios::sync_with_stdio(false);

cin >> n >> s;

eat = n - s;

cin >> m;

for (int i = 0; i < m; i++)

{

cin >> people[i];

}


for (int i = 0; i <100000; i++) //초당 동시에 먹을때 작은번호부터임으로

{

for (int j = 0; j < m; j++)

{

if (i%people[j] == 0) //현재시간을 기준으로 나누어 떨어질때 그사람이 소보루 집음

{//먹기위해 집어든 튀김소보루는 제외하므로

total++;

if (total >= eat)

{

cout << j+1 << "\n";

return 0;

}

}

}

}

return 0;

}

+ Recent posts