What's wrong with my program (Pascal)? Need help or some AC tests! Posted by Alien 7 May 2002 06:39 program P1162; {$APPTYPE CONSOLE} uses SysUtils; const Max=100; var n,m,s:integer; Value,Temp:real; a:array[1..Max] of real; b:array[1..Max] of 0..1; c:array[1..Max] of 0..100; AB:array[1..2*Max,1..2] of integer; RV:array[1..2*Max,1..2] of real; i,j,ci,cx,x,y:integer; procedure input; var i:integer; begin readln(n,m,s,Value); for i:=1 to n do begin a[i]:=0; b[i]:=0; c[i]:=0; end; a[1]:=Value; b[1]:=1; cx:=1; c[1]:=1; for i:=1 to m do begin read(x,y); AB[i,1]:=x; AB[i,2]:=y; read(RV[i,1],RV[i,2]); AB[m+i,1]:=y; AB[m+i,2]:=x; read(RV[m+i,1],RV[m+i,2]); end; end; procedure main; function FindValue(x:integer):real; var Te:real; begin Te:=(a[AB[x,1]]-RV[x,2])*RV[x,1]; FindValue:=Te; end; begin ci:=1; while ci<=cx do begin for i:=1 to 2*m do if AB[i,1]=c[ci] then begin j:=AB[i,2]; Temp:=FindValue(i); if Temp>a[j] then begin a[j]:=Temp; if b[j]=0 then begin b[j]:=1; inc(cx); c[cx]:=j; end; end; if a[1]>Value then begin writeln('YES'); halt(0); end; end; b[c[1]]:=0; dec(cx); for i:=1 to cx do c[i]:=c[i+1]; end; writeln('NO'); end; begin input; main; end. Ural uses Free Pascal to test your program. So {$apptype console} and uses sysutils is illegal! Posted by Koala 26 Feb 2003 16:58 > program P1162; > {$APPTYPE CONSOLE} > uses > SysUtils; > > const Max=100; > var > n,m,s:integer; > Value,Temp:real; > a:array[1..Max] of real; > b:array[1..Max] of 0..1; > c:array[1..Max] of 0..100; > AB:array[1..2*Max,1..2] of integer; > RV:array[1..2*Max,1..2] of real; > i,j,ci,cx,x,y:integer; > procedure input; > var > i:integer; > begin > readln(n,m,s,Value); > for i:=1 to n do > begin > a[i]:=0; > b[i]:=0; > c[i]:=0; > end; > a[1]:=Value; b[1]:=1; > cx:=1; c[1]:=1; > for i:=1 to m do > begin > read(x,y); > AB[i,1]:=x; AB[i,2]:=y; > read(RV[i,1],RV[i,2]); > AB[m+i,1]:=y; AB[m+i,2]:=x; > read(RV[m+i,1],RV[m+i,2]); > end; > end; > procedure main; > function FindValue(x:integer):real; > var > Te:real; > begin > Te:=(a[AB[x,1]]-RV[x,2])*RV[x,1]; > FindValue:=Te; > end; > begin > ci:=1; > while ci<=cx do > begin > for i:=1 to 2*m do > if AB[i,1]=c[ci] then > begin > j:=AB[i,2]; > Temp:=FindValue(i); > if Temp>a[j] then > begin > a[j]:=Temp; > if b[j]=0 then > begin > b[j]:=1; > inc(cx); > c[cx]:=j; > end; > end; > if a[1]>Value then > begin > writeln('YES'); > halt(0); > end; > end; > b[c[1]]:=0; > dec(cx); > for i:=1 to cx do > c[i]:=c[i+1]; > end; > writeln('NO'); > end; > begin > input; > main; > end. |