Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 791 Center  (Citit de 1344 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Martie 28, 2009, 13:41:37 »

Aici puteti discuta despre problema Center.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #1 : Martie 28, 2009, 15:24:37 »

"distanta afisata nu corespunde distantei calculate" -> inteleg ca asta inseamna WA dar e destul de dubios mesajul. Am busit prima valoare? a doua? sau amandoua?

Citat
Afisati capatul stanga cu cat mai multe zecimale (cel putin Cool.
...
Primiti punctajul corespunzator unui test daca pentru ambele cerinte diferenta absoluta dintre rezultatul corect si cel afisat este cel mult 0.01.

Putin cam confusing. De ce trebuie sa afisez cel putin 8 zecimale daca diferenta absoluta dintre rezultatul corect si cel afisat trebuie sa fie 0.01? Cred ca a doua propozitie e valabila numai pentru prima cerinta.
« Ultima modificare: Martie 28, 2009, 15:32:41 de către Savin Tiberiu » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #2 : Martie 28, 2009, 16:58:36 »

Nu am citit cu atentie problema, iar verificatorul nu e scris de mine personal, dar uite sursa lui. Din ce vad eu, acel mesaj este afisat atunci cand diferenta dintre dmin si dmax (care se calculeaza in functie de cele 2 valori afisate de tine) e mai mare decat eroarea tolerata.

Cod:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define NMAX 1001000
#define eps 1e-6
#define deps 0.01

long long x[NMAX], w[NMAX], A, B, C, D;
double dmin, xpos, d, dmax, dok;
int i, j, k, N, L, local_side, side;

#define minim(a,b) ((a) < (b) ? (a) : (b))
#define maxim(a,b) ((a) > (b) ? (a) : (b))

void err(int p, char *msg)
{
fprintf(stderr, msg); 
printf("%d", p); 
fflush(stdout);
exit(0);
}

int main()
{
freopen("center.in", "r", stdin);

scanf("%d %d %lld %lld %lld %lld %lld", &N, &L, &w[1], &A, &B, &C, &D);
x[1] = 0;

for (i = 2; i <= N; i++)
{ // good rule ?
x[i] = x[i - 1] + 1 + (((x[i - 1] * i) ^ A) % B);
//w[i] = 1 + ((((w[i - 1] * B) ^ (long long) (i * D)) % minim(i, N - i + 1)));
if (2 * i <= N)
k = 1;
else
k = -1;

w[i] = maxim(1, w[i - 1] + k * (1 + (((w[i - 1] * (i + C)) ^ (D * i)) % D)));
C = 1 + ((((C * C) % D) * i) % D);
}

freopen("center.out", "r", stdin);

if (scanf("%lf %lf", &dmin, &xpos) != 2)
err(0, "fisier de iesire lipsa sau incomplet");

dmax = 0.0;
for (i = 1; i <= N; i++)
{
if (((x[i] > xpos) || (fabs((double) x[i] - xpos) < eps)) &&
((x[i] < xpos + L) || (fabs((double) x[i] - xpos - L) < eps)))
d = 0;
else
if (x[i] < xpos)
d = w[i] * (xpos - x[i]),
local_side = 1;
else
d = w[i] * (x[i] - xpos - L),
local_side = 2;

//fprintf(stderr, "%.6lf\n", d);

if (d > dmax)
dmax = d,
k = i,
side = local_side;
}

freopen("center.ok", "r", stdin);
scanf("%lf", &dok);

//fprintf(stderr, "dmax(xpos=%.3lf)=%.3lf (k=%d, side=%d) -- dmin=%.3lf -- dok=%.3lf\n", xpos, dmax, k, side, dmin, dok);
//fprintf(stderr, "dif(dmax,dmin)=%.6lf\n", fabs(dmax - dmin));
//fprintf(stderr, "dif(dmax,dok)=%.6lf\n", fabs(dmax - dok));
//fprintf(stderr, "dif(dmin,dok)=%.6lf\n", fabs(dmin - dok));

if (fabs(dmin - dmax) > deps)
err(0, "distanta afisata nu corespunde distantei calculate");
else
if (fabs(dok - dmax) > deps)
err(0, "distanta incorecta");
else
err(10, "Okay!!");

return 0;
}
Memorat
darren
Client obisnuit
**

Karma: 106
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #3 : Martie 21, 2014, 01:00:03 »

Cred ca limita de timp la aceasta problema este prea mica.
Memorat
a_h1926
Echipa infoarena
Nu mai tace
*****

Karma: 317
Deconectat Deconectat

Mesaje: 385



Vezi Profilul
« Răspunde #4 : Martie 21, 2014, 13:25:55 »

Am marit limita de timp. Acum ar trebui sa fie ok.

Multumim pentru sesizare.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines