自测输出是对的,为什么不过?
查看原帖
自测输出是对的,为什么不过?
158665
HZx4楼主2023/5/29 17:54

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

为什么过不了???

2023/5/29 17:54
加载中...