QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#184451 | #5278. Mex and Cards | Zhou_JK | WA | 155ms | 73824kb | C++14 | 2.2kb | 2023-09-20 19:31:42 | 2023-09-20 19:31:42 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<set>
using namespace std;
const int N=200005;
const int M = 1e6 + 1e5;
int n,m,q;
int c[N];
set<int>s;
set<int>pos[M];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
cin>>n;
for(int i=0;i<n;i++)
cin>>c[i];
int premn=c[0],prei=0;
s.insert(0);
pos[c[0]].insert(0);
long long ans=0;
for(int i=1;i<n;i++)
{
if(c[i]<premn)
{
s.insert(i);
ans+=(long long)(i-prei)*c[prei];
prei=i;
}
premn=min(premn,c[i]);
pos[c[i]].insert(i);
}
ans+=(long long)(n-prei)*c[prei];
cout<<ans<<"\n";
cin>>q;
while(q--)
{
int p,v;
cin>>p>>v;
if(p==1)
{
bool del=false;
auto it=s.find(v);
if(it!=s.end())
{
if(it!=s.begin())
{
auto pre=prev(it);
if(c[*pre]<=c[v]+1) del=true;
}
auto nxt=next(it);
auto np=pos[c[v]].upper_bound(v);
// cerr<<"nxt"<<*nxt<<"\n";
// if(np!=pos[c[v]].end()) cerr<<"find"<<*np<<"\n";
if(np!=pos[c[v]].end()&&(nxt==s.end()||*np<*nxt))
{
ans+=(*np-v);
s.insert(*np);
// cerr<<"insert"<<*np<<"\n";
it=s.find(v);
}
else
{
if(nxt!=s.end()) ans+=(*nxt-v);
else ans+=n-v;
}
if(del) s.erase(v);
}
pos[c[v]].erase(v);
c[v]++;
pos[c[v]].insert(v);
}
else if(p==2)
{
// exit(1);
auto it=s.find(v);
if(it!=s.end())
{
if(it!=s.begin())
{
auto pre=prev(it);
auto np=pos[c[v]].upper_bound(*pre);
if(np!=pos[c[v]].end()&&c[*pre]>c[v]&&(*np<v))
{
s.insert(*np);
it=s.find(v);
}
}
auto nxt=next(it);
if(nxt!=s.end())
{
ans-=(*nxt-v);
if(c[*nxt]>=c[v]-1) s.erase(nxt);
}
else ans-=(n-v);
}
else
{
if(s.empty()) exit(0);
auto it=s.upper_bound(v);
if(c[v]-1<c[*prev(it)])
{
if(it!=s.end())
{
ans-=*it-v;
if(c[v]<=c[*it]) s.erase(it);
}
else ans-=n-v;
s.insert(v);
}
}
pos[c[v]].erase(v);
c[v]--;
pos[c[v]].insert(v);
}
// cerr<<"S:\n";
// for(auto it:s)
// cerr<<it<<" ";cerr<<"\n";
cout<<ans<<"\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 55184kb
input:
5 2 1 3 0 2 6 1 0 1 1 2 4 1 3 2 1 2 1
output:
4 5 7 7 9 7 3
result:
ok 7 numbers
Test #2:
score: 0
Accepted
time: 9ms
memory: 55176kb
input:
1 0 0
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 0
Accepted
time: 3ms
memory: 55140kb
input:
10 3 8 1 4 10 3 10 9 7 10 20 2 5 1 4 1 2 1 4 1 3 1 3 1 0 2 8 1 5 1 4 1 0 1 3 1 8 1 6 1 4 1 1 1 5 1 9 1 6 2 7
output:
14 14 14 22 22 22 22 24 24 24 24 26 26 26 26 26 26 26 26 26 26
result:
ok 21 numbers
Test #4:
score: 0
Accepted
time: 0ms
memory: 55192kb
input:
10 9 8 7 5 5 4 3 2 1 1 20 2 4 1 8 2 6 1 2 1 2 2 5 2 2 1 0 1 6 1 6 2 9 1 2 2 7 2 8 2 3 1 9 1 7 1 4 2 6 1 7
output:
45 44 45 44 45 45 44 44 45 46 46 45 45 43 43 42 43 44 44 44 45
result:
ok 21 numbers
Test #5:
score: 0
Accepted
time: 9ms
memory: 55284kb
input:
100 969 519 608 546 957 82 670 100 92 581 974 529 970 54 639 216 238 620 966 162 430 10 446 884 895 292 450 180 619 389 943 855 204 605 514 997 325 98 643 915 744 249 333 431 160 434 714 976 168 573 682 69 873 285 668 561 159 858 864 683 266 564 350 214 461 421 213 568 279 624 749 433 735 437 978 95...
output:
4923 4923 4923 4923 4923 4923 4923 4923 4923 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4927 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 4931 ...
result:
ok 1001 numbers
Test #6:
score: 0
Accepted
time: 0ms
memory: 55224kb
input:
100 994 983 981 980 962 959 959 950 933 887 877 869 841 828 809 807 803 793 789 778 773 772 768 767 765 765 759 757 749 747 742 738 730 724 681 675 656 638 627 626 615 612 593 592 545 543 540 534 531 529 525 520 518 515 512 510 500 494 472 472 432 415 414 411 399 375 350 328 315 307 292 261 258 246 ...
output:
51041 51042 51041 51042 51043 51042 51043 51042 51040 51038 51037 51038 51039 51038 51039 51040 51039 51040 51039 51038 51037 51036 51037 51038 51037 51038 51037 51036 51035 51036 51037 51035 51034 51035 51034 51035 51036 51037 51036 51037 51039 51038 51037 51036 51035 51034 51033 51032 51031 51032 ...
result:
ok 1001 numbers
Test #7:
score: 0
Accepted
time: 4ms
memory: 55328kb
input:
1000 549187 776775 748956 28001 575132 18015 112492 144497 206885 842190 403842 456113 424268 871411 648618 186832 693358 781526 443190 175126 586343 918652 923262 973941 509929 433837 392849 452585 497398 331180 118333 152788 959909 539943 747365 261855 819641 618091 801231 355664 285761 895793 398...
output:
6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317898 6317...
result:
ok 10001 numbers
Test #8:
score: 0
Accepted
time: 8ms
memory: 55292kb
input:
1000 999823 997756 997661 997567 995015 993681 993623 993621 993428 993163 990908 989370 987917 986483 984926 983477 982705 982330 982173 981725 981590 980871 980406 978064 976231 974657 969279 968447 968067 967307 966294 965934 965581 964707 964400 962842 962262 961936 961798 961105 958480 957851 9...
output:
515262961 515262960 515262959 515262958 515262959 515262960 515262961 515262960 515262961 515262962 515262963 515262964 515262963 515262964 515262963 515262964 515262965 515262964 515262965 515262966 515262965 515262966 515262967 515262966 515262967 515262968 515262969 515262968 515262967 515262966 ...
result:
ok 10001 numbers
Test #9:
score: 0
Accepted
time: 39ms
memory: 55648kb
input:
10000 810601 729711 139357 433916 959178 573779 86115 773421 634334 59653 613563 529054 644885 727194 44262 709529 1681 469658 158976 628846 642964 486044 969568 598670 753102 925097 495487 506784 238141 791563 750457 218880 115527 944709 664199 321209 984344 317419 568689 296228 50862 458459 766006...
output:
6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625728 6625...
result:
ok 200001 numbers
Test #10:
score: 0
Accepted
time: 68ms
memory: 56740kb
input:
10000 999881 999862 999854 999798 999750 999710 999412 999389 999270 998698 998592 998557 998315 998147 998082 998080 998006 997734 997662 997601 997508 997439 997415 997336 997118 997049 997037 996886 996794 996734 996724 996654 996654 996423 996381 996276 996179 995968 995639 995300 995289 995246 ...
output:
5011255149 5011255148 5011255147 5011255148 5011255149 5011255148 5011255147 5011255148 5011255149 5011255148 5011255147 5011255148 5011255149 5011255148 5011255149 5011255148 5011255147 5011255148 5011255149 5011255147 5011255146 5011255145 5011255146 5011255147 5011255146 5011255145 5011255144 501...
result:
ok 200001 numbers
Test #11:
score: 0
Accepted
time: 87ms
memory: 65312kb
input:
200000 954932 478728 762927 818548 978278 196477 518754 158676 100286 637040 576732 579262 510238 196651 497902 72985 69112 722929 769712 408173 559817 756434 192540 297097 772778 765866 552840 963172 596523 91866 316071 470277 918307 252349 439797 195172 659054 903280 874588 197108 881845 654102 49...
output:
8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828666 8828...
result:
ok 200001 numbers
Test #12:
score: -100
Wrong Answer
time: 155ms
memory: 73824kb
input:
200000 1000000 1000000 999994 999993 999992 999991 999978 999975 999973 999972 999959 999956 999955 999940 999937 999928 999928 999925 999923 999917 999916 999906 999904 999903 999894 999889 999888 999885 999883 999876 999875 999873 999871 999868 999862 999854 999850 999841 999831 999826 999815 9998...
output:
99850068284 99850068283 99850068284 99850068283 99850068282 99850068283 99850068284 99850068283 99850068284 99850068283 99850068282 99850068283 99850068284 99850068283 99850068282 99850068283 99850068284 99850068282 99850068280 99850068279 99850068278 99850068279 99850068278 99850068278 99850068279 ...
result:
wrong answer 6681st numbers differ - expected: '99850067630', found: '99850067631'