|
|
back to boardWHY? Wrong Answer??? Posted by Heng 15 Aug 2012 07:55 program URAL1299(input,output); var n,np,m,mp,p,x,yg:longint; ch:char; procedure gfire; begin if (abs(yg)>=10)or(m=0) then writeln('FRONT ',x) else writeln( 'FIRE ',p); end; procedure bfire; begin if (abs(yg)>=5)or(m=0) then writeln('BACKWARD ',x) else writeln('FIRE ',p); end; procedure attack; begin readln(n,np); if n*np>=3*m*mp then gfire else bfire; end; procedure guard; begin if m=0 then begin writeln('STOP');exit; end; if abs(yg)<5 then writeln('FIRE ',p) else begin if yg>=+5 then writeln( 'LEFT ',x); if yg<=-5 then writeln('RIGHT ',x); end; end; procedure defense; begin if m*20>=p then bfire else guard; end; procedure patrol; begin readln(yg);//yg:=yg+180; if m>0 then defense else begin if abs(yg)<=20 then writeln('FRONT ',x) else if abs(yg)>=160then writeln('BACKWARD ',x)else begin if yg<-90 then yg:=+180-abs(yg); if yg>+90 then yg:=-180+abs(yg); if yg> 0 then writeln('LEFT ',x) else writeln('RIGHT ',x); end; end; end; begin readln(x,p); if x>100 then x:=100; if p> 20 then p:= 20; readln(ch);readln(m,mp,yg); case ch of 'G':guard; 'A':attack; 'P':patrol; 'D':defense; end; end. Re: WHY? Wrong Answer??? Posted by Heng 15 Aug 2012 08:14 WA14~ Re: WHY? Wrong Answer??? >if x>100 then x:=100; >if p> 20 then p:= 20; You have to use initial values, while finding solution. > if n*np>=3*m*mp This has to be n*np>3*m*mp My solution failed on 14th test, because mine was written like: if n*np*3>m*mp
|
|
|