社区讨论
第4点wa,哪位巨佬可以帮忙看一下?
P1023[NOIP 2000 普及组] 税收与补贴问题参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo24eamv
- 此快照首次捕获于
- 2023/10/23 07:48 2 年前
- 此快照最后确认于
- 2023/11/03 08:07 2 年前
CPP
#include <bits/stdc++.h>
#define MaxN 114514
#define For(i,s,e) for(int i=s;i<=e;i++)
#define dFor(i,s,e) for(int i=s;i>=e;i--)
#define Len(s) s.size()
#define ll long long
using namespace std;
struct node{
int p,m;
}a[MaxN],tong[MaxN];
int tp,c,n,j,mx,ed;
int cmp(node x,node y){
return x.p<y.p;
}
int main(){
int x,y;
scanf("%d%d%d",&tp,&x,&y);
do{
a[++n].p=x;a[n].m=y;
scanf("%d%d",&x,&y);
}while(x!=-1 && y!=-1);
scanf("%d",&j);
sort(a+1,a+n+1,cmp);
int t=0;c=a[1].p;
For(i,c,a[n].p-1){
if(i==a[t+1].p)t++;
int nj=(a[t].m-a[t+1].m)/(a[t+1].p-a[t].p);
int xl=a[t].m-(i-a[t].p)*nj;
a[i].p=(i-c);a[i].m=xl;
mx=max((i-c)*xl,mx);
// printf("%d %d %d %d %d\n",i,t,nj,xl,i-c);
}
for(int i=a[n].p,k=a[n].m;k>0;i++,k-=j){
a[i].p=(i-c);a[i].m=k;
mx=max((i-c)*k,mx);
ed=i;
// printf("%d %d %d %d %d\n",i,n,j,k,i-c);
}
if(a[tp].m*a[tp].p>=mx){
printf("0");
}
for(int i=1;;i++){
int z=1,f=1,mz=a[tp].m*(a[tp].p+i),mf=a[tp].m*(a[tp].p-i);
For(k,c+1,ed){
int nz=a[k].m*(a[k].p+i),nf=a[k].m*(a[k].p-i);
if(nz>mz){z=0;/*printf("%d ",nz);*/}
if(nf>mf){f=0;/*printf("%d ",nf);*/}
if(!z && !f)break;
}
//printf("%d %d\n",mf,mz);
if(z || f){
if(f)printf("-");
printf("%d",i);
return 0;
}
}
return 0;
}
/*
4011
1 79990
7999 10
-1 -1
10
-20
*/
我输出-22,答案是-20;www
回复
共 4 条回复,欢迎继续交流。
正在加载回复...