QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#669705#7787. Maximum RatingblackfrogWA 1ms7824kbC++141.5kb2024-10-23 19:26:482024-10-23 19:26:49

Judging History

你现在查看的是最新测评结果

  • [2024-10-23 19:26:49]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:7824kb
  • [2024-10-23 19:26:48]
  • 提交

answer

#include<iostream>
using namespace std;

const long long N = 2e5+10;
const long long L = -1e9-10, R = 1e9+10;

long long n,q, tot = 1, rt = 1;

long long t[N<<7], siz[N<<7], ls[N<<7], rs[N<<7], a[N];

void pushup(long long p){
    t[p] = t[ls[p]] + t[rs[p]];
    siz[p] = siz[ls[p]] + siz[rs[p]];
}

void insert(long long &p, long long l, long long r, long long x, long long c){
    if(p == 0)p = ++tot;
    if((long long)(r - l) == 1ll){
        t[p] += x * c;
        siz[p] += c;
        return;
    }
    long long mid = (l + r) >> 1;
    if(x < mid)insert(ls[p], l, mid, x, c);
    else insert(rs[p], mid, r, x, c);
    pushup(p);
}

long long query(long long &p, long long s){
    if(s >= t[p])return siz[p];
    if(s > t[ls[p]])return siz[ls[p]] + query(rs[p], s - t[ls[p]]);
    if(s == t[ls[p]])return siz[ls[p]];
    else return query(ls[p], s);
}

long long neg;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>q;
    for(long long i = 1;i<=n;i++){
        cin>>a[i];
        if(a[i] > 0){
            insert(rt, L, R, a[i], 1);
        }
        if(a[i] < 0){
            neg -= a[i];
        }
    }
    while(q--){
        long long x, v;
        cin>>x>>v;
        if(a[x] > 0){
            insert(rt, L, R, a[x], -1);
        }
        else{
            neg += a[x];
        }
        a[x] = v;
        if(v > 0){
            insert(rt, L, R, v, 1);
        }
        else{
            neg -= v;
        }
        cout<<query(rt, neg) + 1<<'\n';
    }
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 7812kb

input:

3 5
1 2 3
3 4
2 -2
1 -3
3 1
2 1

output:

1
2
2
2
3

result:

ok 5 number(s): "1 2 2 2 3"

Test #2:

score: 0
Accepted
time: 1ms
memory: 7724kb

input:

3 5
1 2 3
3 4
2 -2
1 3
3 1
2 1

output:

1
2
1
2
1

result:

ok 5 number(s): "1 2 1 2 1"

Test #3:

score: 0
Accepted
time: 1ms
memory: 7660kb

input:

1 1
1000000000
1 1000000000

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3640kb

input:

1 1
-1000000000
1 -1000000000

output:

1

result:

ok 1 number(s): "1"

Test #5:

score: -100
Wrong Answer
time: 1ms
memory: 7824kb

input:

1000 1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

output:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
...

result:

wrong answer 1st numbers differ - expected: '946', found: '1'