WA了,输出总有负号
查看原帖
WA了,输出总有负号
400195
EqufixSN-Equfix楼主2021/8/26 08:01

RT,调了半天没调出来

代码:

#include<bits/stdc++.h>
#define int long long
#define mod (998244353)
#define inf (1e9)
using namespace std;
inline int read(){
    int n=0,s=1;
    char x;
    while((x=getchar())<'0'||x>'9')
        if(x=='-')
            s=-1;
    while(x>='0'&&x<='9'){
        n=(n<<1)+(n<<3)+x-'0';
        x=getchar();
    }
    return n*s;
}
void write(int n,char s=0){
    if(n<0){
        putchar('-');
        n=-n;
    }
    if(n>9)write(n/10);
    putchar('0'+n-n/10*10);
    if(s)putchar(s);
}
int c[2000010][2];
inline int lowbit(int i){return i&-i;}
inline void add(int i,int x,bool flag){for(;i<=2000009;i+=lowbit(i))c[i][flag]+=x;}
inline int find(int i,bool flag){int ans=0;for(;i;i-=lowbit(i))ans+=c[i][flag];return ans;}
const int D=1000003;
int qwq[100001];
bool flag[100001];
bool mem[100001];
bool mem2[100001];
bool mem1[100001];
signed main(){
    int aqx=read();
    int qwqqwqqwq=0;
    for(int i=1;i<=aqx;i++){
        char op[10];
        scanf("%s",op);
        if(op[0]=='A'){
            int a=read(),b=read(),c=read();
            if(a==0){
                mem[i]=1;
                mem2[i]=(b>c);
                qwqqwqqwq+=(b>c);
                continue;
            }
            c-=b;
            if(a>0){
                int ans=(int)floor((long double)c/a)+1;
                qwq[i]=ans;
                if(abs(ans)>1000000)continue;
                add(ans+D,1,0);
            }
            else {
                a=-a;
                c=-c;
                int ans=-((int)floor((long double)c/a));
                qwq[i]=ans;
                flag[i]=1;
                if(abs(ans)>1000000)continue;
                add(ans+D,1,1);
            }
        }
        if(op[0]=='Q'){
            int k=read();
            int ans=qwqqwqqwq;
            ans+=find(k+D,0);
            ans+=find((-k)+D,1);
            write(ans,'\n');
        }
        if(op[0]=='D'){
            int x=read();
            if(mem1[x])continue;
            mem1[x]=1;
            if(mem[x]){
                qwqqwqqwq-=mem2[x];
                continue;
            }
            if(abs(qwq[x])>1000000)continue;
            add(qwq[x]+D,-1,flag[x]);
        }
    }
    return 0;
}
2021/8/26 08:01
加载中...