- assert문 는 .
- 륭 머들 따 보 노.
- 문 머들 assert문 .
~cpp
#include <iostream>
#include <fstream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("milk.in");
ofstream fout("milk.out");
void InputInitData(int& suf, int& numf, map<int,int>& data, vector<int>& numlist);
int Process(int& suf, int& numf, map<int,int>& data, vector<int>& numlist);
void OutputData(int& numf, map<int,int>& data, vector<int>& numlist);
int main()
{
int numf, suf;
map<int,int> data;
vector<int> numlist;
InputInitData(suf, numf, data, numlist);
fout << Process(suf, numf, data, numlist) << endl;
return 0;
}
void InputInitData(int& suf, int& numf, map<int,int>& data, vector<int>& 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<int,int>& data, vector<int>& 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;
}