tyvj P1279 - 柠檬超市

  巨好听的~~~方大同的

P1279 - 柠檬超市

From sillycross    Normal (OI) 总时限:10s    内存限制:128MB

背景 Background

『Citric杯』NOIP模拟赛 I 第一题

描述 Description

某天Lemon去超市买柠檬,他发现货架上有N个柠檬,每个柠檬都有一个重量Wi和价格Ci. Lemon身上只带了S元钱,因此他想要买一个价格不超过S的柠檬回家,另外,他希望他买的那个柠檬的性价比尽量高。 性价比的定义是重量除以价格,即第i个柠檬的性价比是Wi/Ci. 你的任务是告诉Lemon,他应该买第几个柠檬。

输入格式 InputFormat

输入文件第一行包含两个正整数N,S 输入文件第2~N+1行,每行包含两个正整数Wi,Ci,第i+1行的数表示第i个柠檬的重量和价格。

输出格式 OutputFormat

输出文件第一行仅包含一个数K,表示购买第K只柠檬能使Lemon在可以接受的价格内获得最高的性价比。题目保证答案唯一。

样例输入 SampleInput [复制数据]

4 15
4 8
4 10
8 10
10000 20

样例输出 SampleOutput [复制数据]

3

数据范围和注释 Hint

第1只柠檬重量为4,价格为8,性价比为4/8=0.5 第2只柠檬重量为4,价格为10,性价比为4/10=0.4 第3只柠檬重量为8,价格为10,性加比为8/10=0.8 第4只柠檬重量为10000,价格为20,性价比为10000/20=500,但Lemon只带了15元,无法购买这只柠檬 因此Lemon的最佳选择是第3只柠檬。

时间限制 TimeLimitation

时间限制为1s 对于100%的数据,满足0<N<=100000;0<S<=10^9;0<Wi,Ci<=10^9;N,S,W,C均为整数。
最开始以为会爆精度..但是不会...开extended 然后快排下找到就退出就OK...
program tyvj1279; type node=record s:extended;p:longint; end;
var c,w:array[1..100000] of longint; a:array[1..100000] of node; n,s,i:longint; procedure qsort(head,tail:longint); var i,j:longint;x:node; begin i:=head;j:=tail;x:=a[i]; while i<j do begin while (i<j) and(a[j].s>=x.s) do dec(j); a[i]:=a[j]; while (i<j)and(a[i].s<=x.s) do inc(i); a[j]:=a[i]; end; a[i]:=x; if head<i-1 then qsort(head,i-1); if tail>i+1 then qsort(i+1,tail); end; begin readln(n,s); for i:=1 to n do begin readln(w[i],c[i]); a[i].s:=w[i]/c[i]; a[i].p:=i; end; qsort(1,n); for i:=n downto 1 do if c[a[i].p]<=s then begin writeln(a[i].p); halt; end; end.

posted on 2012-10-28 21:23  馒头~blue  阅读(450)  评论(0)    收藏  举报

导航