比赛 20120709 评测结果 WAWWAAWAWWWW
题目名称 聪明的推销员 最终得分 33
用户昵称 张弛 运行时间 0.154 s
代码语言 Pascal 内存使用 0.41 MiB
提交时间 2012-07-09 10:21:53
显示代码纯文本
  1. program kkxx;
  2. var
  3. a,time,name1,name2:array[1..10000] of longint;
  4. f:array[1..100000] of boolean;
  5. i,j,n,p,r,t,max,min,t1,c:longint;
  6. procedure sort(l,r:longint);
  7. var
  8. i,j,x,y: longint;
  9. begin
  10. i:=l;
  11. j:=r;
  12. x:=time[(l+r) div 2];
  13. repeat
  14. while time[i]<x do
  15. inc(i);
  16. while x<time[j] do
  17. dec(j);
  18. if not(i>j) then
  19. begin
  20. y:=time[i];
  21. time[i]:=time[j];
  22. time[j]:=y;
  23. y:=a[i];
  24. a[i]:=a[j];
  25. a[j]:=y;
  26. inc(i);
  27. j:=j-1;
  28. end;
  29. until i>j;
  30. if l<j then
  31. sort(l,j);
  32. if i<r then
  33. sort(i,r);
  34. end;
  35. begin
  36. assign(input,'salenet.in');reset(input);
  37. assign(output,'salenet.out');rewrite(output);
  38. readln(n,p);
  39. for i:=1 to p do
  40. readln(a[i],time[i]);
  41. fillchar(f,sizeof(f),false);
  42. readln(r);
  43. for i:=1 to r do
  44. readln(name1[i],name2[i]);
  45.  
  46. sort(1,p);
  47. t:=0;
  48. while t<p do
  49. begin
  50. inc(t);
  51. if not f[a[t]] then begin f[a[t]]:=true; max:=max+time[t]; end;
  52. for i:=1 to r do
  53. if name1[i]=a[t] then f[name2[i]]:=true;
  54. end;
  55. for i:=1 to n do
  56. if f[i] then inc(min)
  57. else begin inc(t1); c:=i; break; end;
  58. if t1=0 then begin writeln('YES'); writeln(max); end
  59. else begin writeln('NO'); writeln(c); end;
  60. if min=n then
  61. else
  62.  
  63.  
  64. close(input);close(output);
  65. end.