C. Milk Measurement
- kir3i
#include <iostream>
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
int measure[3] = {7, 7, 7}; //0 - Bessie, 1 - Elsie, 2 - Mildred
vector<pair<int, pair<int, int>>> cowlog; // {day, {cow_num, d_milk}}
int find_max()
{
int rtn = 0;
int max_measure = max(measure[0], max(measure[1], measure[2]));
for(int i=0; i<3; i++)
if(measure[i] == max_measure)
rtn |= 1<<i;
return rtn;
}
int main(void)
{
cin.tie(0);
ios_base::sync_with_stdio(0);
int N;
cin >> N;
for(int i=0; i<N; i++)
{
int day, d_milk, cow_num;
string cow_name;
cin >> day >> cow_name >> d_milk;
if(cow_name == "Bessie")
cow_num = 0;
else if(cow_name == "Elsie")
cow_num = 1;
else if(cow_name == "Mildred")
cow_num = 2;
cowlog.push_back(make_pair(day, make_pair(cow_num, d_milk)));
}
sort(cowlog.begin(), cowlog.end());
//μ΄κΈ°μλ λͺ¨λ μ μμ μμ°λμ΄ λμΌνλ―λ‘ λͺ¨λ μ μμ μ¬μ§μ΄ κ±Έλ €μλ€.
int status = 1<<2 | 1<<1 | 1<<0;
int logidx = 0;
int cnt = 0;
for(int day=1; day<=100; day++)
{
for( ; logidx<N; logidx++)
{
if(cowlog[logidx].first == day)
measure[cowlog[logidx].second.first] += cowlog[logidx].second.second;
else
break;
}
int t = find_max();
//μ΅λκ°μ μμΉλ κ°μκ° λ¬λΌμ§ κ²½μ°
if(status != t)
{
status = t;
cnt++;
}
}
cout << cnt;
}Last updated