社区讨论

#3 TLE,求条,必关

P13744[NWERC 2024] Flowing Fountain参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mk9hhw44
此快照首次捕获于
2026/01/11 16:40
上个月
此快照最后确认于
2026/01/15 16:45
上个月
查看原帖
快读快写我都用上了,还TLE
CPP
#include<bits/stdc++.h>
using namespace std;
int z[300010],x[300010],c[300010];
int read(){
	int q=0,w=1;char e=getchar();
	while(e<'0'||e>'9'){if(e=='-')w=-1;e=getchar();}
	while('0'<=e&&e<='9'){q=q*10+e-'0';e=getchar();}
	return q*w;
}
void write(int v){
	if(v<0){putchar('-');v=-v;}
	if(v>9)write(v/10);
	putchar(v%10+'0');
}
void m(int l,int k,int j){
    int a;
    if(c[l]!=0){
        a=c[l];
    }else{
        a=l+1;
        while(a<=j&&z[a]<=z[l]){
            a++;
        }
        c[l]=a;
    }
    if(z[l]-x[l]>=k){
        x[l]+=k;
        return ;
    }
    k-=z[l]-x[l];
    x[l]=z[l];
    
    if(a>j||k<=0){
        return ;
    }
    m(a,k,j);
} 
int main(){
    int e,r,q=read(),w=read();
    char p;
    for(int i=1;i<=300009;i++){
        x[i]=0;
        c[i]=0;
    }
    for(int a=1;a<=q;a++)
        z[a]=read();
    
    for(int a=1;a<=w;a++){
        scanf("%c",&p);
        while(p==' '||p=='\n'){
            scanf("%c",&p);
        }
        
        if(p=='?'){
            e=read();
            write(x[e]);
            printf("\n");
        }
        else{
            e=read();
            r=read();
            m(e,r,q);
        }
    }
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...