I am currently trying to submit the following code into USACO 2019 Bronze Problem 1 (Cow Gymnastics). The website keeps saying that my code is outputting 2 for the sample input case, but it is actually outputting 4 (the correct answer). Why is this happening?
Here is a link to the problem and the sample input case that I am talking about:
http://www.usaco.org/index.php?page=viewproblem2&cpid=963
Here is the code that I tried to submit:
# include <iostream>
using namespace std;
// Strategy:
// 1. Create a 2D matrix that holds a grid of size K * N
// K rows, N columns
// Make sure that the matrix is 1-based (for convenience -> the code will also work if you make the matrix 0-based)
// 2. Iterate through all the pairs that exist within a certain practice session
// Find pair (A, B) -> Cow A did better than Cow B
// Once you found the pair, increment [A][B]
// 3. Count the number of pairs that contain a value that is equal to K
// Cow A has consistently scored higher than Cow B throughout all practice sessions
// You might also want to create a 2D matrix to hold the original input values
int main() {
freopen("gymnastics.in", "r", stdin);
freopen("gymnastics.out", "w", stdout);
int K, N, nVal;
cin >> K >> N;
int input[30][30];
int a[30][30];
// Set the values in 'a' equal to 0
// Make sure to modify only the indexes that we're going to use in our code
for(int i = 1; i <= K; i ++) {
for(int j = 1; j <= N; j ++) {
a[i][j] = 0;
}
}
// Take in the inputs (one-based)
for(int i = 1; i <= K; i ++) {
for(int j = 1; j <= N; j ++) {
cin >> nVal;
input[i][j] = nVal;
}
}
// Fill out 'A'
for(int i = 1; i <= K; i ++) {
for(int j = 1; j <= N; j ++) {
for(int k = j + 1; k <= N; k ++) {
a[input[i][j]][input[i][k]]++;
}
}
}
// Iterate through the indexes in 'a' that we have filled out + determine how many of them contain a value that is equal to K
int counter = 0;
// for(int i = 1; i <= N; i ++) {
// for(int j = 1; j <= N; j ++) {
// cout << a[i][j] << " ";
// }
// cout << endl;
// }
for(int i = 1; i <= N; i ++) {
for(int j = 1; j <= N; j ++) {
if(a[i][j] == K) {
counter ++;
}
}
}
cout << counter << endl;
return 0;
}