Я работаю над задачей USACO, и грейдер выдает 4, в то время как моя машина дает 3, правильный ответ.
Ввод:
4
7 Милдред + 3
4 Элси -1
9 Милдред -1
1 Бесси + 2
Я выполнил это через отладчик, и проблем не обнаружено.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>
using namespace std;
int N, bmilk=7, emilk=7, mmilk=7;
int bboard=0, eboard=0, mboard=0;
int ans=0;
vector<pair<int,pair<string,int>>> a;
int main()
{
ofstream fout("measurement.out");
ifstream fin("measurement.in");
fin >> N;
for (int i = 0; i < N; i++)
{
int d, chg;
string c;
fin >> d >> c >> chg;
a.push_back(make_pair(d,make_pair(c,chg)));
}
sort(a.begin(), a.end());
for (int i = 0; i < N; i++)
{
if (a[i].second.first=="Bessie") bmilk+=a[i].second.second;
else if (a[i].second.first=="Elsie") emilk+=a[i].second.second;
else mmilk+=a[i].second.second;
int best_milk = max(bmilk,max(emilk,mmilk));
int curr_board[4];
for (int j = 0; j < 3; j++) curr_board[i]=0;
if (bmilk==best_milk) curr_board[0]=1;
if (emilk==best_milk) curr_board[1]=1;
if (mmilk==best_milk) curr_board[2]=1;
if (curr_board[0]!=bboard||curr_board[1]!=eboard||curr_board[2]!=mboard)
{
ans++;
bboard=curr_board[0];
eboard=curr_board[1];
mboard=curr_board[2];
}
}
fout << ans << "\n";
return 0;
}
Может кто-нибудь, пожалуйста, помогите мне найти причину этой ошибки?