* 이제 assert문 쓰는 법을 알아 가고 있다. * 훌륭한 프로그래머들의 습관을 따라 해보려 노력중이다. * 전문 프로그래머들은 assert문을 자주 쓴다고 한다. {{{~cpp #include #include #include #include #include using namespace std; ifstream fin("milk.in"); ofstream fout("milk.out"); void InputInitData(int& suf, int& numf, map& data, vector& numlist); int Process(int& suf, int& numf, map& data, vector& numlist); void OutputData(int& numf, map& data, vector& numlist); int main() { int numf, suf; map data; vector numlist; InputInitData(suf, numf, data, numlist); fout << Process(suf, numf, data, numlist) << endl; return 0; } void InputInitData(int& suf, int& numf, map& data, vector& numlist) { fin >> suf; fin >> numf; int cost, amount; for(int i = 0 ; i < numf ; ++i) { fin >> cost; fin >> amount; if(data[cost] == 0) numlist.push_back(cost); data[cost] += amount; } sort(numlist.begin(), numlist.end()); } int Process(int& suf, int& numf, map& data, vector& numlist) { int ret = 0; int until = 0; int whenstop = 0; for(int i = 0 ; i < numlist.size() ; ++i) { if(suf > until + data[numlist[i]]) { ret += numlist[i] * data[numlist[i]]; until += data[numlist[i]]; } else { whenstop = i; break; } } if(whenstop < numlist.size()) ret += numlist[whenstop] * (suf - until); return ret; } }}}