Ciao a tutti; sia nella gara di venerdì che nel tempo libero che sto avendo questi giorni ho tentato di portare malls al 100; tuttavia per un solo output incorretto fallisco la subtask 4, mentre per due output la subtask 3, tutto il resto ridà. Mi sto arrovellando da due giorni su quale possa essere l’errore che io abbia fatto, ma più provo e meno mi convinco di aver sbagliato. Vi allego il mio codice qui sotto (ho tolto il maggiore all’inizio delle librerie perchè l’editor del testo qui sul forum lo riconosce come tag e non come testo:
#include fstream>
#include algorithm>
using namespace std;
int main()
{
fstream in, out;
in.open("input.txt",ios::in);
out.open("output.txt",ios::out);
long long int n,max=0,pos=0,k,i,j;
in>>n;
in>>k;
long long int v[n];
for(i=0;i<n;i++)
in>>v[i];
sort(v,v+n);
for(i=0;i<n-1;i++)
{
if((v[i+1]-v[i])>=max)
{
max=v[i+1]-v[i];
pos=v[i];
}
//out<<max<<" "<<pos<<endl;
}
if((v[0]!=0)&&(v[0]>=max))
{
max=0;
pos=0;
}
if((k-v[n-1])>=max)
{
if((k-v[n-1])>=v[0])
{
max=0;
pos=k;
}
}
out<<(max/2)+pos;
in.close();
out.close();
return 0;
}
Da un primo sguardo quando controlli che v[0] sia diverso da 0 per verificare se 0 è una buona posizione dove mettere il nuovo centro commerciale, nel caso in cui conviene scegliere 0 come posizione max non prende il valore di v[0].
Poi dovresti fare lo stesso controllo per la fine della strada a v[n-1] e provare a verificare se conviene metterlo su K.
Mettendo il codice come spoiler non riesco a copiarlo per debbugarlo sul mio editor.
Non avevo visto il controllo, il copia e incolla del codice ha sballato un po’ tutto <.<
il codice qua sotto è per chi vuole vederlo meglio xd
#include <iostream >
#include <fstream >
#include <algorithm >
using namespace std;
int main()
{
fstream in, out;
in.open(“input.txt”, ios::in);
out.open(“output.txt”, ios::out);
long long int n, max = 0, pos = 0, k, i, j;
in >> n;
in >> k;
long long int v[n];
for (i = 0; i < n; i++)
in >> v[i];
sort(v, v + n);
for (i = 0; i < n - 1; i++) {
if ((v[i + 1] - v[i]) >= max) {
max = v[i + 1] - v[i];
pos = v[i];
}
//out<<max<<" "<<pos<<endl;
}
if ((v[0] != 0) && (v[0] >= max)) {
max = 0;
pos = 0;
}
if ((k - v[n - 1]) >= max) {
if ((k - v[n - 1]) >= v[0]) {
max = 0;
pos = k;
}
}
out << (max / 2) + pos;
in.close();
out.close();
return 0;
}