杭电1009 编译器能运行,却RE

#include
#include
using namespace std;
int find(double *p,double a[], double b[])
{
int i=0;
int m, n;
m = *(a + i), n = *(b + i);
while (*p != m / (n * 1.0))
{
i++;
m = *(a + i), n = *(b + i);
}
return i;
}
int main()
{
int m, n;
double *p, o[1000];
p = o;
while (cin >> m >> n)
{
double s=0;
if (m if (n == 0)
{
printf("%.3f\n", 0);
continue;
}
double j[1000], f[1000];
for (int i = 0; i {
int k = 0;
cin >> j[i-k] >> f[i-k];
if (f[i] == 0)
{
s += j[i];
k++;
}
else *(p+i-k) = j[i-k] / (f[i-k]*1.0);
}
sort(p, p + n);
while (m != 0)
{
int i;
if (n < 0) break;
i=find(p+n-1,j,f);
if (m >= f[i])
{
s += j[i];
m -= f[i];
}
else
{
s += j[i] * m / (f[i] * 1.0);
m = 0;
}
n--;
}
printf("%.3f\n", s);
}
}