QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#770204 | #7787. Maximum Rating | jiangzhihui# | WA | 2ms | 12000kb | C++14 | 2.1kb | 2024-11-21 21:07:03 | 2024-11-21 21:07:03 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=4e5+10;
struct treearr{
ll c[N];
int lowbit(int x){
return x&(-x);
}
void add(int p,int v){
while(p<N){
c[p]+=v;
p+=lowbit(p);
}
}
ll query(int p){
ll res=0;
while(p){
res+=c[p];
p-=lowbit(p);
}
return res;
}
};
struct query{
int pos,v;
};
int a[N],n,q,b[N],len;
query qs[N];
void init(){
map<int,int> mp;
sort(b+1,b+1+len);
len=unique(b+1,b+1+len)-b-1;
for(int i=1;i<=len;i++){
mp[b[i]]=i;
}
for(int i=1;i<=n;i++){
if(a[i]>0){
a[i]=mp[a[i]];
}
}
for(int i=1;i<=q;i++){
if(qs[i].v>0){
qs[i].v=mp[qs[i].v];
}
}
}
treearr t1,t2;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>0){
b[++len]=a[i];
}
}
for(int i=1;i<=q;i++){
cin>>qs[i].pos>>qs[i].v;
if(qs[i].v>0){
b[++len]=qs[i].v;
}
}
init();
ll f_sum=0;
for(int i=1;i<=n;i++){
if(a[i]>0){
t1.add(a[i],1);
t2.add(a[i],b[a[i]]);
}else{
f_sum+=a[i];
}
}
for(int i=1;i<=q;i++){
int pos=qs[i].pos;
int v=qs[i].v;
if(a[pos]>0){
t1.add(a[pos],-1);
t2.add(a[pos],-b[a[pos]]);
}else{
f_sum-=a[pos];
}
a[pos]=v;
if(a[pos]>0){
t1.add(a[pos],1);
t2.add(a[pos],b[a[pos]]);
}else{
f_sum+=a[pos];
}
int mx=t1.query(len);
int l=1,r=len;
while(l<=r){
int mid=(l+r)>>1;
if(t2.query(mid)+f_sum>0){
r=mid-1;
}else{
l=mid+1;
}
}
int mn=t1.query(len)-t1.query(l-1);
cout<<mx-mn+1<<'\n';
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 9756kb
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: 0ms
memory: 11752kb
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: 2ms
memory: 11780kb
input:
1 1 1000000000 1 1000000000
output:
1
result:
ok 1 number(s): "1"
Test #4:
score: 0
Accepted
time: 1ms
memory: 7548kb
input:
1 1 -1000000000 1 -1000000000
output:
1
result:
ok 1 number(s): "1"
Test #5:
score: -100
Wrong Answer
time: 0ms
memory: 12000kb
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'