社区讨论
求助90差#17和#19
P8563 Magenta Potion参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo7wmyte
- 此快照首次捕获于
- 2023/10/27 08:58 2 年前
- 此快照最后确认于
- 2023/10/27 08:58 2 年前
为什么会90呢???
17和19两个测试点为啥会WA
大样例对拍都过了
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k;
int a[200005];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int temp;
int l,r;
for(int i=0;i<m;i++){
cin>>temp>>l>>r;
if(temp==1){
a[l]=r;
}
else{
if(l>r){
cout<<1<<endl;
continue;
}
if((r-l)>100){
cout<<"Too large"<<endl;
continue;
}
int fs=0,x,y;
for(int j=l;j<=r;j++){
if(a[j]<0){
fs++;
if(fs==1){
x=j;
}
}
}
for(int j=r;j>=l;j--){
if(a[j]<0){
y=j;
break;
}
}
if(fs%2==0 || fs==0){//必为正数
if((r-l)>30){
cout<<"Too large"<<endl;
continue;
}
else{
int ans=1;bool pd=0;
for(int j=l;j<=r;j++){
ans*=a[j];
if(ans>1073741824){
cout<<"Too large"<<endl;
pd=1;
break;
}
}
if(pd==0) cout<<ans<<endl;
}
}
else{//
int ans1=1; int ans2=1;bool pd=0;
for(int j=l;j<y;j++){
ans1*=a[j];
if(ans1>1073741824){
cout<<"Too large"<<endl;
pd=1;
break;
}
}
if(pd==0){
for(int j=x+1;j<=r;j++){
ans2*=a[j];
if(ans2>1073741824){
cout<<"Too large"<<endl;
pd=1;
break;
}
}
}
if(pd==0) cout<<max(ans1,ans2)<<endl;
}
}
}
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...