Day 4 submission
This commit is contained in:
parent
61b6c4ca9f
commit
5689b82731
|
@ -0,0 +1,91 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <cstring>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct board
|
||||
{
|
||||
int nums[25];
|
||||
|
||||
friend istream &operator>>( istream &input, board &b ) {
|
||||
for(int i = 0; i < 25; i++) input >> b.nums[i];
|
||||
return input;
|
||||
}
|
||||
|
||||
bool marked[25];
|
||||
};
|
||||
|
||||
bool is_winning(board b);
|
||||
int board_score(board b, int last_drawn);
|
||||
|
||||
int main()
|
||||
{
|
||||
int drawing[100];
|
||||
|
||||
vector<board> boards;
|
||||
board next_board;
|
||||
|
||||
for(int i = 0; i < 100; i++) cin >> drawing[i];
|
||||
|
||||
while (cin >> next_board)
|
||||
{
|
||||
memset(next_board.marked, false, 25);
|
||||
boards.push_back(next_board);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 100; i++)
|
||||
{
|
||||
for(int j = 0; j < boards.size(); j++)
|
||||
{
|
||||
for(int k = 0; k < 25; k++)
|
||||
{
|
||||
if (drawing[i] == boards[j].nums[k])
|
||||
{
|
||||
boards[j].marked[k] = true;
|
||||
if (is_winning(boards[j]))
|
||||
{
|
||||
cout << board_score(boards[j], drawing[i]) << endl;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool is_winning(board b)
|
||||
{
|
||||
for(int i = 0; i < 5; i++)
|
||||
{
|
||||
if (b.marked[5*i] && b.marked[5*i+1] && b.marked[5*i+2] && b.marked[5*i+3] && b.marked[5*i+4])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 5; i++)
|
||||
{
|
||||
if (b.marked[i] && b.marked[i+5] && b.marked[i+10] && b.marked[i+15] && b.marked[i+20])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int board_score(board b, int last_drawn)
|
||||
{
|
||||
int sum = 0;
|
||||
for(int i = 0; i < 25; i++)
|
||||
{
|
||||
if (!b.marked[i])
|
||||
{
|
||||
sum += b.nums[i];
|
||||
}
|
||||
}
|
||||
return last_drawn*sum;
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <cstring>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct board
|
||||
{
|
||||
int nums[25];
|
||||
|
||||
friend istream &operator>>( istream &input, board &b ) {
|
||||
for(int i = 0; i < 25; i++) input >> b.nums[i];
|
||||
return input;
|
||||
}
|
||||
|
||||
bool marked[25];
|
||||
};
|
||||
|
||||
bool is_winning(board b);
|
||||
int board_score(board b, int last_drawn);
|
||||
|
||||
int main()
|
||||
{
|
||||
int drawing[100];
|
||||
|
||||
vector<board> boards;
|
||||
board next_board;
|
||||
|
||||
for(int i = 0; i < 100; i++) cin >> drawing[i];
|
||||
|
||||
while (cin >> next_board)
|
||||
{
|
||||
memset(next_board.marked, false, 25);
|
||||
boards.push_back(next_board);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 100; i++)
|
||||
{
|
||||
for(int j = 0; j < boards.size(); j++)
|
||||
{
|
||||
for(int k = 0; k < 25; k++)
|
||||
{
|
||||
if (drawing[i] == boards[j].nums[k])
|
||||
{
|
||||
boards[j].marked[k] = true;
|
||||
if (is_winning(boards[j]))
|
||||
{
|
||||
if (1 == boards.size())
|
||||
{
|
||||
cout << board_score(boards[j], drawing[i]) << endl;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
boards.erase(boards.begin() + j);
|
||||
j--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool is_winning(board b)
|
||||
{
|
||||
for(int i = 0; i < 5; i++)
|
||||
{
|
||||
if (b.marked[5*i] && b.marked[5*i+1] && b.marked[5*i+2] && b.marked[5*i+3] && b.marked[5*i+4])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 5; i++)
|
||||
{
|
||||
if (b.marked[i] && b.marked[i+5] && b.marked[i+10] && b.marked[i+15] && b.marked[i+20])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int board_score(board b, int last_drawn)
|
||||
{
|
||||
int sum = 0;
|
||||
for(int i = 0; i < 25; i++)
|
||||
{
|
||||
if (!b.marked[i])
|
||||
{
|
||||
sum += b.nums[i];
|
||||
}
|
||||
}
|
||||
return last_drawn*sum;
|
||||
}
|
Loading…
Reference in New Issue