题目链接:http://codeforces.com/problemset/problem/463/A

题目意思:某个人有 s dollar的钱,有 n 种类型的糖果,第 i 种糖果的价值为 xi dollar + yi cent。这个商场比较古怪,如果收了顾客的cent,它不会找回相应的cent,而是用对应的sweet来替代。这个人只可以买一种类型的糖果,前提是 s dollar 大于等于糖果的价值,问最多可以得到的sweet是多少。

有几个细节需要注意:

(1)如果够钱买,但是糖果的cent 为 0,这个人是得不到任何sweet!

(2)判断够不够钱买糖果的时候,不能只单纯看dollar,而要看埋对应的cent。例如这组数据:

1  10

10  10

这个人是买不起这种糖果的!

(3)sweet 数 = 100 - yi(前提是买得起)

   
 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = + ; struct node
{
int x, y;
bool operator < (const node& a) const
{
return x < a.x;
} }sugar[maxn]; int main()
{
int s, n;
while (scanf("%d%d", &n, &s) != EOF)
{
for (int i = ; i < n; i++)
scanf("%d%d", &sugar[i].x, &sugar[i].y);
sort(sugar, sugar+n);
int ans = ;
int flag = ;
for (int i = ; i < n; i++)
{
if (sugar[i].x > s)
break;
else if (sugar[i].x == s && sugar[i].y > ) // 对应情况2
continue;
else
{
if (sugar[i].y == ) // 对应第一种情况
ans = max(ans, );
else
ans = max(ans, -sugar[i].y);
flag = ;
}
}
printf("%d\n", flag ? ans : -);
}
return ;
}
05-11 11:30