Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color
         
 | 
VNOI - Olympic tin học Việt Nam

Điểm tin VOJ

Số thành viên:6040
Số bài tập:1001
Số bài nộp:722923
Bài nộp hôm nay:0

Top 10 thành viên xuất sắc

HạngThành viênĐiểm
1mr_invincible587.9
2white_cobra418.6
3hieult403.4
4phaleq384.0
5vodanh9x368.2
6con_nha_ngheo352.0
7flash_mt350.2
8darksabers349.8
9yenthanh132345.3
10rockman9x_94343.1

Danh tiếng các thành viên

HạngThành viênĐiểm
1mr_invincible+213
2conankudo+149
3khuc_tuan+137
4tuananhnb93+129
5khanhptnk+108
6hphong+103
7flash_mt+99
8paulmcvn+71
9technolt+70
10hoangle+63

Topcoder Vietnam

HạngThành viênĐiểm
Diễn đàn
Forum
Lỗi NZEC bài QBHEAP? (1 đang xem) ,(1) Khách
Bài viết dưới cùng Gửi trả lời Được ưa thích: 0
CHỦ ĐỀ - Lỗi NZEC bài QBHEAP?
#70230
vanhung12345 (Thành viên)
Đã biết code đệ quy
Bài viết: 12
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Cho mình hỏi bài bên dưới bị lỗi gì mà sao khi nộp bài lên chấm bài được tí thì báo lỗi NZEC. Mình thấy đã khai báo đủ số kích thước mảng, kiểu dữ liệu đúng rồi mà. (Mã bài: QBHEAP)
Code:
 
program qbheap;
var a: array [0..15000] of longint;
    c: char;
    n,m: longint;
procedure cong(v: longint);
 var i,max,vt: longint;
 begin
  max:=0;
  for i:=0 to n do
   if (a[i]>=max) and (a[i]<=v) then
    begin
     max:=a[i];
     vt:=i;
     if a[vt]=v then exit;
    end;
  for i:=n downto vt+1 do
   a[i+1]:=a[i];
   a[vt+1]:=v;
  inc(n);
 end;
procedure tru;
 var i,t: longint;
 begin
  i:=n;
  t:=a[n];
  while a[i]=t do
   begin
    a[i]:=0;
    dec(n);
    dec(i);
   end;
 end;
procedure xuat;
 var i: longint;
 begin
  writeln(n);
  for i:=n downto 1 do writeln(a[i]);
 end;
begin
 assign(input,'');
 assign(output,'');
 reset(input);
 rewrite(output);
 n:=0;
 fillchar(a,sizeof(a),0);
 while not eof(input) do
  begin
   read(c);
   if (c='+') and (n<15000) then
    begin
     readln(m);
     cong(m);
    end else if c='-' then tru;
  end;
 xuat;
 close(input);
 close(output);
end.
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#70231
Dream_link_1428 (Thành viên)
tntbinh1428
Đã biết code đệ quy
Bài viết: 6
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Bạn thử dãn mảng a lên đi, khoảng 50000 chẳng hạn
Khi code bao h cũng cho mảng lớn hơn yêu cầu để tránh bị tràn.
 
Đã lưu IP Đã lưu IP  
 
Pascal dẫn lối - IT vô đối <3
  Đã khóa chức năng gửi bài.
#70233
vanhung12345 (Thành viên)
Đã biết code đệ quy
Bài viết: 12
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Thank bạn nhưng nó cũng vậy, lúc thì báo NZEC lúc thì báo chạy lâu lúc thì quá bộ nhớ ... mặc dù trên máy chạy bình thường với số thao tác tới 10000, v lên max 1000000000 (chạy khoản 1s số thao tác là 100000). Các bạn có thể check thuật toán dùm mình không Thank trước?
Code:
 
program qbheap;
var a: array [0..40000] of longint;
    c: char;
    v,n: longint;
procedure cong(v: longint);
 var max,i,vt: longint;
 begin
  max:=0;
  for i:=0 to n do
   if (a[i]>=max) and (a[i]<=v) then
    begin
     max:=a[i];
     vt:=i;
     if a[i]=v then exit;
    end;
  for i:=n downto vt+1 do
   a[i+1]:=a[i];
  a[vt+1]:=v;
  inc(n);
 end;
procedure tru;
 var t,i: longint;
 begin
  i:=n;
  t:=a[n];
  while a[i]=t do
   begin
    a[i]:=0;
    dec(n);
    dec(i);
   end;
 end;
procedure xuat;
 var t,i: longint;
 begin
  writeln(n);
  for i:=n downto 1 do
   writeln(a[i]);
 end;
begin
 assign(input,'');
 assign(output,'');
 reset(input);
 rewrite(output);
 n:=0;
 fillchar(a,sizeof(a),0);
 while not eof(input) do
  begin
   read(c);
   if (c='+') and (n<15000) then
    begin
     readln(v);
     cong(v);
    end else if (c='-') and (n>0) then tru;
  end;
 xuat;
 close(input);
 close(output);
end.
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#70234
iamquang95 (Thành viên)
Nhắm mắt code không bug
Bài viết: 295
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Code:
procedure tru;
 var i,t: longint;
 begin
  i:=n;
  t:=a[n];
  while a[i]=t do
   begin
    a[i]:=0;
    dec(n);
    dec(i);
   end;
 end;
Bạn xem qua chỗ này Nếu nhập như sau +1 +1 +1 - Thì sẽ bị tràn :-?
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#70243
vanhung12345 (Thành viên)
Đã biết code đệ quy
Bài viết: 12
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Chạy bình thường mà bạn tại mình có khai báo luôn a[0]. Gửi bài lên toàn báo chạy quá lâu chắc gặp test nào đó rồi bị loop rồi nhưng không biết chỗ nào?
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#70259
haplinhavxt (Thành viên)
hhiepit_k52+16
Nhắm mắt code không bug
Bài viết: 180
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Bài này bạn phải sử dụng Heap thì mới AC được
 
Đã lưu IP Đã lưu IP  
 
'+' cho em đi nào!
  Đã khóa chức năng gửi bài.
#70260
vanhung12345 (Thành viên)
Đã biết code đệ quy
Bài viết: 12
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Thank bạn, bạn có thể gợi ý thêm hay không?
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#70264
vanhung12345 (Thành viên)
Đã biết code đệ quy
Bài viết: 12
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: Lỗi NZEC bài QBHEAP? 8 năm trước   (+0)
Mình đã sửa lại bạn check hộ nhé. Không biết sai chỗ nào nó báo kết quả sai nhưng chạy example của nó thì bình thường
Code:
 
program qbheap;
var a,b: array [0..30000] of longint;
    c: char;
    v: longint;
    n,d: integer;
procedure insert;
 var i,t: integer;
 begin
  inc(n);
  a[n]:=v;
  b[n]:=n;
  for i:=d to n-1 do
   if a[b[i]]=a[n] then
    begin
     a[n]:=0;
     b[n]:=0;
     dec(n);
     exit;
    end else if a[b[i]]<a[n] then
     begin
      t:=b[i];
      b[i]:=b[n];
      b[n]:=t;
     end;
 end;
procedure remove;
 var i: integer;
 begin
  b[d]:=0;
  inc(d);
 end;
procedure xuat;
 var i: integer;
 begin
  writeln(d);
  for i:=d to n do
   writeln(a[b[i]]);
 end;
begin
 assign(input,'');
 assign(output,'');
 reset(input);
 rewrite(output);
 d:=1;
 n:=0;
 fillchar(a,sizeof(a),0);
 while not eof(input) do
  begin
   read(c);
   if (c='+') and (n<15000) then
    begin
     readln(v);
     insert;
    end else if (c='-') and (n>0) then
     begin
      remove;
      readln;
     end;
  end;
 xuat;
 close(input);
 close(output);
end.
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
Bài viết trên cùng Gửi trả lời
Powered by FireBoardBài viết mới nhất từ diễn đàn cho các chương trình nhận tin RSS