编辑代码

#include <iostream>
#include <string.h>
#include <iomanip>
#include <algorithm>
using namespace std;

double d[10], p[10];

int main() {
    double cid, C, oid, dx; 
    int n;
    cin >> cid >> C >> oid >> n;
    for (int i = 1;i <= n;i++) {
        cin >> d[i] >> p[i];
    }
    double nc=0, nm=0;
    for (int i = 1;i <= n;i++) {
        if (d[i+1] > C*oid+d[i] || (i==n&&d[i]+C*oid)) {
            cout << "No Solution";
            return 0;
        }
        int i2 = -1;
        for (int j = i+1;d[j]-d[i] <= C*oid&&j <= n;j++) {
            if (p[j] <= p[i]) {
                i2 = j;
            }
        }
        if (i2 == -1) {
            if (cid <= C*oid+d[i]) {
                nm += (cid - d[i]) / oid * p[i];
                break;
            }
            else {
                nm += (C-nc)*p[i];
                nc = C-(d[i+1]-d[i])/oid;
            }
        }
        else {
            if (nc >= (d[i2]-d[i])/oid) {
                nc -= (d[i2]-d[i])/oid;
            }
            else {
                nm += ((d[i2]-d[i])/oid-nc)*p[i];
                nc = 0;
            }
        }
    }
    cout << setprecision(2)<< nm;
    return 0;
}