这个题我调了一个晚上!!
到底哪里错了啊!!!??
#include <bits/stdc++.h>
#define INF 99999999
using namespace std;
double dis, C, disl, pri, sy;
int n;
double dismax;
double ans, rem, b = 1.0;
struct data {
double d, p;
}f[10];
bool cmp(data a, data b) {
return a.d < b.d;
}
void journey(int x) {
double pr = INF; int po;
for (int i = x + 1; i <= n; i++) {
if(f[x].d + dismax < f[i].d) break;
if(pr > f[i].p)
pr = f[i].p, po = i;
}
double dish = f[po].d - f[x].d;
if(f[x].p <= pri && f[x].d + dismax >= dis) {
ans += ((dis - f[x].d) / disl - sy) * f[x].p;
printf("%.2lf", ans);
exit(0);
}
if(pr == INF) {
printf("No Solution");
exit(0);
}
if(pr <= f[x].p) {
ans += (dish / disl - sy) * f[x].p;
sy = 0.0;
}
else {
ans += (C - sy) * f[x].p;
sy = C - dish / disl;
}
journey(po);
}
int main() {
scanf("%lf%lf%lf%lf%d", &dis, &C, &disl, &pri, &n);
for (int i = 1; i <= n; i++) {
scanf("%lf%lf", &f[i].d, &f[i].p);
}
f[0].d = 0.0, f[0].p = pri;
sort(f + 1, f + n + 1, cmp);
dismax = C * disl;
journey(0);
return 0;
}