RT, 1和2没过
#include<iostream>
#include<cstdio>
using namespace std;
int g,w,n;
int a[100100]; // a[i]: i利润可以卖出的数量
int x[2],y[2],c,ma;
int main(){
cin>>g;
cin>>n>>a[0];
x[c]=0, y[c]=a[0];
c=1-c;
while(cin>>x[c]>>y[c]){
if(x[c]==-1&&y[c]==-1) break;
x[c]-=n;
if(x[c]-x[1-c]>1){
int q=(y[c]-y[1-c])/(x[c]-x[1-c]);
for(int i=x[1-c]+1;i<x[c];i++){
a[i]=a[i-1]+q;
}
}
a[x[c]]=y[c];
ma=max(x[c],ma);
c=1-c;
} cin>>w; g-=n;
while(a[ma]-w>0) a[++ma]=a[ma-1]-w;
int x1,x2,x,f; // x1: old price x2: gov price
for(x=0;x<=100000;x++){
x2=(g+x)*a[g];
f=0;
for(int i=0;i<=ma&&!f;i++){
x1=(i+x)*a[i];
if(x1>x2) f=1;
}
if(!f){
cout<<x<<endl;
return 0;
}
f=0;
x2=(g-x)*a[g];
for(int i=0;i<=ma&&!f;i++){
x1=(i-x)*a[i];
if(x1>x2) f=1;
}
if(!f){
cout<<-x<<endl;
return 0;
}
}
cout<<"NO SOLUTION";
return 0;
}
样例1我输出的也是4
样例2:
输入
315
280 1300
300 1200
310 1100
-1 -1
150
输出:
-32
为什么过不了???