QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#748726 | #9631. Median Replacement | hewanying | TL | 7ms | 3868kb | C++14 | 1.7kb | 2024-11-14 21:13:25 | 2024-11-14 21:13:25 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N=155,H=1e9+7;
int n,l[N],r[N],tot=1,f[N][3],a[N<<2],len,ans;
int adc(int a,int b){return a+b>=H?a+b-H:a+b;}
int dec(int a,int b){return a<b?a-b+H:a-b;}
int mul(int a,int b){return 1ll*a*b%H;}
void add(int &a,int b){a=adc(a,b);}
void del(int &a,int b){a=dec(a,b);}
int qpow(int a,int b=H-2){
int res=1;
while(b){if(b&1) res=mul(res,a);a=mul(a,a),b>>=1;}
return res;
}
int Len(int l,int r){return max(0,r-l+1);}
int F(int x){
f[0][0]=1;
for(int i=1;i<=n;i++){
f[i][0]=mul(Len(l[i],min(r[i],x-1)),adc(f[i-1][0],f[i-1][2]));
f[i][1]=mul(Len(max(l[i],x),r[i]),f[i-1][0]);
f[i][2]=mul(Len(l[i],min(r[i],x-1)),f[i-1][1]);
}
int res=tot;
for(auto i:{0,1,2}) del(res,f[n][i]);
return res;
}
int Lag(vector<int> &X,vector<int> &Y,int pos){
int res=0,m=(int)X.size();
for(int i=0;i<m;i++){
int cur=Y[i];
for(int j=0;j<m;j++) if(j!=i) cur=mul(cur,mul(dec(pos,X[j]),qpow(dec(X[i],X[j]))));
add(res,cur);
}
return res;
}
void SOLVE(){
cin>>n,tot=1,len=ans=0;
for(int i=1;i<=n;i++) cin>>l[i],a[++len]=l[i]-1;
for(int i=1;i<=n;i++) cin>>r[i],tot=mul(tot,Len(l[i],r[i])),a[++len]=r[i];
sort(a+1,a+len+1),len=unique(a+1,a+len+1)-a-1;
for(int i=1;i<len;i++){
int L=a[i]+1,R=a[i+1];
if(Len(L,R)<=n+2) for(int x=L;x<=R;x++) add(ans,F(x));
else{
vector<int> X(0),Y(0);
for(int x=L,s=0;x<=L+n+1;x++) add(s,F(x)),X.pb(x),Y.pb(s);
add(ans,Lag(X,Y,R));
}
}
cout<<adc(ans,mul(a[1],tot))<<'\n';
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int _;cin>>_;
while(_--) SOLVE();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3628kb
input:
10 5 5 1 4 3 2 14 2 5 3 2 5 4 5 1 2 3 13 7 1 2 3 5 5 2 5 3 1 10 2 12 3 2 5 5 5 3 1 5 57 5 3 1 5 5 2 2 3 3 5 4 5 4 4 5 5 4 5 3 5 3 13 7 3 5 3 5 5 1 4 2 3 14 3 4 2 3 5 1 2 5 4 5 2 8 5 7 5 5 1 1 3 5 1 8 2 3 8 1 5 4 4 4 2 3 5 10 5 2 3
output:
180 170 650 265 182 173 120 296 192 131
result:
ok 10 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
10 5 1 2 2 5 3 6 4 2 6 3 5 4 4 1 4 3 6 7 2 5 3 5 5 3 4 2 4 5 7 5 2 6 5 1 5 3 5 2 7 7 3 5 2 5 1 3 3 2 2 10 5 3 2 2 5 4 4 4 5 3 4 11 9 5 3 5 5 3 2 1 3 13 5 2 1 5 5 5 4 1 2 5 10 6 1 2 5 5 3 5 3 4 2 5 9 3 5 2 5 1 1 3 2 1 7 3 3 3 1
output:
120 230 144 110 110 289 324 89 140 122
result:
ok 10 lines
Test #3:
score: 0
Accepted
time: 0ms
memory: 3656kb
input:
10 5 3 1 3 4 4 9 1 3 10 4 5 1 1 3 1 1 9 1 3 3 1 5 5 1 2 3 1 74 1 2 3 1 5 2 5 5 3 4 5 6 8 3 4 5 2 1 3 4 5 2 4 6 4 5 5 2 4 2 1 3 2 11 3 2 3 5 1 5 4 4 2 1 14 6 6 2 5 4 1 3 5 1 9 2 4 5 1 5 4 1 2 4 4 6 1 6 4 4 5 3 2 5 3 5 8 8 5 3 5
output:
196 76 140 172 72 80 486 84 65 224
result:
ok 10 lines
Test #4:
score: 0
Accepted
time: 1ms
memory: 3560kb
input:
10 5 676437428 903889545 700650370 965758082 146716866 676437431 903889567 700650370 965758082 146716866 5 517457740 64600397 388618400 783268973 388618400 517457797 64600397 388618400 783268973 388618400 5 971452763 106948541 259878781 537741075 9504353 971452780 106948544 259878781 537741075 95043...
output:
157838571 539867046 711272106 123881231 497944943 9791579 539012259 963879245 315607794 495624077
result:
ok 10 lines
Test #5:
score: 0
Accepted
time: 1ms
memory: 3824kb
input:
10 5 462008700 417744555 925098328 70231697 547596413 462008735 417744555 925098328 70231697 547596413 5 294230630 403894618 294230635 403894620 403894617 294230638 403894620 294230635 403894620 403894617 5 757647830 757647826 757647828 184694646 161891480 757647839 757647827 757647830 184694646 161...
output:
713470735 905154643 458869425 477055327 633375786 349097981 980046476 478461437 573246310 810688575
result:
ok 10 lines
Test #6:
score: 0
Accepted
time: 7ms
memory: 3652kb
input:
10 150 7 1 8 8 2 3 8 2 1 3 2 10 9 7 3 9 4 5 4 5 10 7 9 9 9 3 4 7 10 8 5 3 5 1 8 4 1 2 7 9 10 9 1 7 4 7 6 8 7 6 6 7 4 5 10 8 7 10 2 8 1 4 9 2 9 3 9 6 2 2 7 7 10 8 4 10 4 1 7 3 3 5 4 3 9 7 4 1 8 1 4 4 2 7 5 4 9 6 5 8 6 4 8 7 4 6 8 8 2 9 8 3 10 9 2 4 6 10 2 8 9 1 6 6 7 8 8 7 8 8 8 3 4 6 3 8 10 10 10 3 ...
output:
8640 8000 9600 8100 9360 9900 9600 9960 9300 5560
result:
ok 10 lines
Test #7:
score: 0
Accepted
time: 2ms
memory: 3868kb
input:
10 150 5 4 2 6 6 9 4 8 4 9 2 5 4 7 5 4 2 1 10 10 6 5 10 2 5 8 4 2 10 4 10 8 4 1 4 1 6 3 2 4 1 10 10 1 9 7 7 4 7 6 9 2 4 5 2 6 2 9 10 6 6 8 7 7 1 9 1 7 5 3 4 9 5 2 3 2 10 2 9 3 1 3 7 9 8 3 7 2 2 8 8 5 2 4 8 4 10 10 2 1 10 8 10 3 7 1 6 9 9 7 8 1 9 3 7 6 4 9 1 2 7 8 4 8 6 7 4 2 7 3 9 5 6 6 1 1 9 6 3 6 ...
output:
5760 9600 6580 7680 5280 7200 8640 8000 5400 5040
result:
ok 10 lines
Test #8:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
10 150 1 1 7 5 2 6 5 9 10 2 5 9 10 10 9 5 2 2 8 7 2 10 9 5 10 4 4 10 3 1 3 8 5 8 3 5 9 4 2 1 4 1 3 2 5 4 4 7 10 2 7 10 9 9 1 1 2 4 7 2 1 4 2 4 5 1 6 6 6 5 10 3 7 5 7 7 7 4 3 3 3 5 3 9 9 8 5 7 5 5 1 5 1 5 7 2 1 8 7 7 7 3 8 6 7 8 4 5 10 7 5 7 4 8 7 2 6 6 7 6 2 1 6 6 8 9 3 9 2 7 9 1 2 1 7 7 4 3 3 1 4 3...
output:
8800 8100 5040 5580 9600 7200 6400 5184 7560 8640
result:
ok 10 lines
Test #9:
score: -100
Time Limit Exceeded
input:
10 150 390717977 225426217 217154512 811659013 811659022 811659006 811659019 811658998 380139276 562680969 391897894 391897902 610662417 702576570 778349151 778349150 144611847 144611847 888681165 952726258 635003873 635003864 365476184 353032583 492888825 492888833 451690481 492888832 492888828 781...