백준 2839번 문제입니다.

제가 짠 코드인데 비효율적이고 쓸데없이 복잡한거 알고 있습니다. 찾아보니 그리디 알고리즘을 사용해야하는 문제더라고요 근데 그리디 알고리즘을 외우고 학습하기전에 제가 짠 코드의 어디부분이 잘못 굴러가는지 알아야할거 같아서 질문 올립니다. 

#include <iostream>

#include <vector>

using namespace std;

int a;

int b;

int b1;

int c;

int c1;

vector<int> account;

void solve(int a);

int solve2(vector<int>& account);

int main() {

cout <<"설탕의 무게를 입력하세요: ";

cin >> a;

solve(a);

if (account.size() == 0) {

cout << " - 1";

}

cout << solve2(account);

}

void solve(int a) {

for (int j = 1; j < 100;j++) {

b = a % (5*j);

b1 = a / (5 * j);

if (b == 0) {

account.push_back(b1*j);

}

for (int i = 1; i < 100; i++) {

c = b % (3 * i);

c1 = b / (3 * i);

if (c == 0) {

account.push_back(b1*j+c1*i);

}

}

}

}

int solve2(vector<int> &account) {

int ab;

ab = account[0];

for (int i = 0; i < account.size();i++) {

if (ab > account[i]) {

ab = account[i];

}

}

return ab;

}


여기서 a에 11올리면 제가 생각하기에는 bj*j가 1나오고 ci*i가 2 나와서 b1*j+c1*i가 결국 3이 나와서 account 벡터에 3이 들어간다고 생각하는데 account에 아무값도 안들어가네요 뭐가 문제일까요?