Buonasera a tutti,
stavo cercando di risolvere il problema Semina (ABC 2014).
In locale sembra funzionare alla perfezione ma ogni volta che provo a sottomettere la mia soluzione ottengo 0/100.
Non capisco cosa mi sfugga, qualcuno riesce a spiegarmi il problema?
#include <cstdio>
#include <cassert>
#include <algorithm>
using namespace std;
constexpr int max_val = 200;
int campo[max_val][max_val]{};
void semina(const int x1, const int x2, const int y1, const int y2)//Qui ho fatto in modo che x1<x2 e y1<y2
{
for(register int i{x1}; i<x2; ++i)
{
for(register int j{y1}; j<y2; ++j)
{
++campo[i][j];
}
}
}
int totale()
{
int tot{}, massimo{};
for(register int i{}; i<max_val; ++i)
{
for(register int j{}; j<max_val; ++j)
{
if(massimo < campo[i][j])
{
tot = massimo = campo[i][j];
}
else if(massimo == campo[i][j])
{
tot += campo[i][j];
}
}
}
return tot;
}
int main()
{
FILE* fin = fopen("input.txt", "r");
FILE* fout = fopen("output.txt", "w");
int N;
assert( 1 == fscanf(fin, "%d", &N) );
for(register int i{}; i<N; ++i)
{
int a,b,c,d;
assert( 4 == fscanf(fin, "%d %d %d %d", &a, &b, &c, &d) );
semina(a+99,c+99,d+99,b+99);
}
fprintf(fout, "%d", totale());
fclose(fin);
fclose(fout);
return 0;
}
Dati di output
L’output è costituito da un unico numero intero non negativo: quanti semi Mario ha messo, al termine di tutte le semine, nella zona dove ve ne sono di più.
In questo momento mi viene un dubbio però, cosa bisogna fare se due zone distinte del campo possiedono lo stesso numero di semi per metro quadro?
Se per esempio la zona A(-10, 50, 21, 45) e la zona B(-90, 0, 0, -90) possiedono entrambe 4 semi per cella bisogna restituire il numero di semi totali nelle due zone o solo della zona B?