其中有些不确定的
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAXN = 100005;
struct money{
int price, l;
}a[MAXN];
bool cmp(money x, money y){
return x.price < y.price;
}
int main(){
int n;
cin >> n;//预期价
int m = 0;
int s, st;
while(cin >> s >> st){
if(s == -1 && st == -1)
break;
a[m].price = s, a[m].l = st;
m++;
}
sort(a, a+m, cmp);
int x;
cin >> x;
int t;//预期价的位置
int r = m;//扩大预期价
for(int i = 0; ; i++){
if(a[i].price == n){
t = i;
break;
}
r++;
a[r].price++;
a[r].l -= x;
}
for(int j = 1; j <= MAXN; j++){
int c[MAXN], maxn = -100000, p = 1;
memset(c,0,sizeof(c));
for(int i = 1; i <= r+1; i++){
int q = a[i].price - a[i-1].price;
c[i] = (q+j) * a[i].l;
if(maxn < c[i])
maxn = c[i], p = i;
}
if(p == r){
cout << j;
return 0;
}
}
cout << "NO SOLITION";
return 0;
}