蒟蒻求教为什么只有60分

P2781 传教

@[DengTJ](/space/show?uid=26971) 我这样,能拿80分 ``` cpp #include<iostream> #include<cstdio> using namespace std; int n,m,len; struct s{ int left,right,num; }; s a[1003]; int main() { // freopen("segment.in","r",stdin); // freopen("segment.out","w",stdout); cin>>n>>m; for(int i=1;i<=m;i++) { int l,r,k; int check; cin>>check; if(check==1) { cin>>l>>r>>k; a[++len].left=l; a[len].right=r; a[len].num=k; } else { cin>>l>>r; long long ans=0; for(int j=1;j<=len;j++) { if(l>a[j].right||r<a[j].left) continue; if(l<a[j].left) { if(a[j].right>=r) { ans+=(r-a[j].left+1)*a[j].num; } if(a[j].right<r) ans+=(a[j].right-a[j].left+1)*a[j].num; } else if(a[j].left<=r){ if(a[j].right>r) ans+=(r-l+1)*a[j].num; else ans+=(a[j].right-l+1)*a[j].num; } } cout<<ans<<endl; } } } ```
by 任弈凡 @ 2018-10-31 13:07:46


再开$long long$能拿$100$分
by 任弈凡 @ 2018-10-31 14:15:52


|