- 粘贴文本
- 2009-07-30 16:46:19 @
很头疼,也很奇怪。
我用的是一般的数组加Move函数,时间没问题,但是我第一次交的时候结果是存取非法。后来改了数据范围,将100000改为200000,结果就没问题了。
然后我一直改,发现数据的下限是199923.但是题目说数据不超过100000.这是怎么回事的啊!
源程序如下:
var n,m,a,b,c,i,j,k:longint;
txt,txt2:array[1..200000]of longint;{我就改了这里}
begin
read(n,m);
for i:=1 to n do
txt[i]:=i;
for i:=1 to m do
begin
read(a,b,c);
k:=b-a+1;
j:=k shl 2;
move(txt[a],txt2[1],j);
move(txt,txt[a],(n-b)shl 2);
move(txt[c+1],txt[c+k+1],(n-c)shl 2);
move(txt2[1],txt[c+1],j);
end;
for i:=1 to 10 do
writeln(txt[i]);
end.
——————————————————————————
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:运行时错误...| 错误号: 128 |
├ 测试数据 08:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 09:运行时错误...| 错误号: 216 | 存取非法
├ 测试数据 10:运行时错误...| 错误号: 128 |
---|---|---|---|---|---|---|---|-
这是我第一次提交的情况。
——————————————————————
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 150ms
├ 测试数据 09:答案正确... 134ms
├ 测试数据 10:答案正确... 103ms
---|---|---|---|---|---|---|---|-
这是我改后的情况。
请各位路过的大牛指点下!!!!!
小弟不胜感激!!!!!!!!!!!!!!!!!!!!!!!!!!!!