QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#398620 | #7301. Even Three is Odd | edisnimorF | AC ✓ | 51ms | 66716kb | C++14 | 1.9kb | 2024-04-25 15:51:41 | 2024-04-25 15:51:41 |
Judging History
answer
#include<bits/stdc++.h>
namespace ckain {
//default defines
#define il inline
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define pii pair<int, int>
#define fr first
#define sc second
#define eb emplace_back
#define ll long long
#define mset(f, z) memset(f, z, sizeof(f))
#define mcpy(f, g) memcpy(f, g, sizeof(g))
//default functions
template<typename T=ll>
il T rd() {
T s=0; bool f=1; char c=getchar();
while(!isdigit(c)) f^=(c=='-'), c=getchar();
while(isdigit(c)) s=s*10+c-'0', c=getchar();
return f? s:-s;
}
template<typename T> il void ckmx(T &x, T y) {if(x<y) x=y;}
template<typename T> il void ckmn(T &x, T y) {if(y<x) x=y;}
}
using namespace std;
using namespace ckain;
char _begin;
#define int ll
const int N=2005, P=1e9+7;
int n, w[N], f[N][N], g[N][N], si[N], sw[N];
void get(int *_g) {
for(int i=1; i<=n; i++) {
si[i]=(_g[i]*(i-1)+si[i-1])%P;
sw[i]=(_g[i]*w[i]+sw[i-1])%P;
}
}
void solve() {
for(int i=1; i<=n; i++) {
w[i]=rd();
for(int j=1; j<=n; j++) f[i][j]=g[i][j]=0;
}
if(n<3) {
printf("0\n");
return;
}
for(int i=1; i<=n; i++) {
f[2][i]=i;
g[2][i]=1;
}
for(int i=2; i<n; i++) {
get(g[i]);
int sf=0;
for(int j=1; j<=n; j++) {
(sf+=f[i][j])%=P;
(g[i+1][j]+=f[i][j]*w[j])%=P;//p(i+1)<p(i)
(f[i+1][j]+=sf*w[j])%=P;
(f[i+1][j]+=si[j]*w[j])%=P;
(f[i+1][j]+=(sw[n]-sw[j]+P)*j)%=P;
(g[i+1][j]+=(sw[n]-sw[j]+P))%=P;
/*
for(int k=1; k<=n; k++) {
if(k>=j) (f[i+1][k]+=f[i][j]*w[k])%=P;
(f[i+1][k]+=g[i][j]*w[max(j, k)]%P*min(j-1, k))%=P;
if(k<j) (g[i+1][k]+=g[i][j]*w[j])%=P;
}
*/
}
}
int ans=0;
for(int i=1; i<=n; i++) {
(ans+=f[n][i])%=P;
(ans+=g[n][i]*(i-1))%=P;
}
printf("%lld\n", ans);
}
char _end;
signed main(signed argc, char *argv[]) {
debug("%lfMB\n", (&_end-&_begin)/1024./1024.);
while(cin>>n) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5892kb
input:
3 1 2 3 4 1 1 1 1
output:
72 256
result:
ok 2 number(s): "72 256"
Test #2:
score: 0
Accepted
time: 1ms
memory: 5972kb
input:
20 2 1 1 2 1 1 2 2 1 1 1 2 1 2 2 2 2 2 1 1 20 1 1 1 1 1 1 1 2 2 2 2 1 2 1 2 1 1 1 2 2 20 2 1 2 2 1 2 2 1 1 1 2 1 2 1 2 2 1 1 2 1 20 1 1 1 1 1 2 1 1 1 2 1 2 2 1 1 2 2 2 1 2 20 2 2 1 1 2 2 2 1 2 2 1 2 2 2 2 1 2 2 2 2 20 1 1 2 1 2 1 2 2 1 2 2 2 1 2 1 2 2 2 1 1 20 1 2 1 1 1 2 1 1 1 1 1 2 1 2 1 1 2 2 2 1...
output:
319733964 40518147 400924261 38787721 897349820 493064982 759767625 401417778 567673098 202982388 409477312 214563090 608955253 887076718 443657041 235173408 471938201 768115792 934580672 588618862 808662651 462080423 871122184 321300347 413884324 720362807 549790197 780388163 250729956 49025886 263...
result:
ok 100 numbers
Test #3:
score: 0
Accepted
time: 1ms
memory: 6032kb
input:
20 983380751 708372152 534389660 854380310 406905313 606185721 941692711 734994736 910390968 900300887 183918461 371552529 798892008 68293780 650769940 547768169 502245417 567965812 623465221 632455730 20 969814296 632645698 353407887 775111974 19835316 622749258 218528404 235697220 677299937 151257...
output:
901128997 908372962 843262444 477210532 825370959 861748183 818296926 567410118 495019857 123498731 723176529 841859717 213644035 845439384 489145021 750276499 460768856 443673849 909615746 996576192 181226793 394196473 806760075 394894275 961660067 359733606 645650813 957584478 290217414 160017286 ...
result:
ok 100 numbers
Test #4:
score: 0
Accepted
time: 2ms
memory: 7980kb
input:
50 546326159 188010383 744080796 970371898 707879921 337976248 218468964 271634902 363822839 142649550 74624041 695797688 16056713 122318400 445551499 511751832 358582430 495733936 591190909 610584228 125744325 544261750 202395079 2630396 345195167 148750363 990265221 239686197 583270754 451628256 8...
output:
953472132 176277811 817755515 345600464 71009615 636715799 672096907 783602797 527280447 638297563 725540036 674573744 271472152 563761119 393445571 696033139 495478492 390457147 698571984 18175901 60734091 368367517 655107436 934986143 808192747 55862567 896507513 532862866 212425116 218271513 4785...
result:
ok 40 numbers
Test #5:
score: 0
Accepted
time: 11ms
memory: 23108kb
input:
500 923289363 281790836 394996448 3461119 297656725 85160318 333917012 944579859 277222705 364228860 657772876 476918464 201589281 374257316 459651358 361386596 254071925 732085023 324787251 775459986 520545937 132229513 639843210 956102033 228591021 59772402 102435380 277235675 864305236 752164831 ...
output:
547107559 173944705 96178102 358654284
result:
ok 4 number(s): "547107559 173944705 96178102 358654284"
Test #6:
score: 0
Accepted
time: 47ms
memory: 66584kb
input:
2000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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:
596636543
result:
ok 1 number(s): "596636543"
Test #7:
score: 0
Accepted
time: 51ms
memory: 66464kb
input:
2000 1 2 2 2 1 2 1 1 1 1 1 1 2 1 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 2 2 2 2 1 2 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 1 1 2 1 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 2 2 2 1 2 1 1 1 2 1 2 2 1 2 1 2 2 2 1 2 1 1 1 2 2 2 2 1 1 2 1 2 1 1 2 1 2 1 1 1 1 1 2 2 2 1 1 2 2 1 2 1 2 1 1 2 1 1 1 2 1 1 1 2 2 2 2 2 1...
output:
60361314
result:
ok 1 number(s): "60361314"
Test #8:
score: 0
Accepted
time: 45ms
memory: 66604kb
input:
2000 1 2 1 1 2 2 2 3 1 3 2 3 2 2 3 1 2 1 3 1 3 2 2 2 2 3 3 3 2 3 1 2 2 1 3 2 3 1 3 3 2 1 2 2 2 2 3 1 3 1 2 2 3 3 1 2 1 1 3 2 2 2 2 2 1 2 1 1 2 2 1 2 2 2 1 1 3 1 2 2 3 3 3 1 2 2 1 2 3 3 3 1 2 1 2 1 2 2 2 3 2 1 3 3 3 1 3 2 2 1 1 1 1 1 3 2 1 2 3 2 3 3 1 1 3 3 3 2 2 1 1 3 1 2 3 1 2 3 1 1 2 3 2 1 1 2 1 2...
output:
846447792
result:
ok 1 number(s): "846447792"
Test #9:
score: 0
Accepted
time: 50ms
memory: 66588kb
input:
2000 1 3 1 3 1 3 4 3 2 1 4 2 4 4 1 4 1 2 3 4 3 4 3 1 3 3 4 2 1 4 3 3 2 2 3 1 4 2 2 2 2 2 2 3 2 3 1 4 1 1 2 4 2 3 2 2 3 4 4 1 2 4 4 1 1 4 4 3 3 2 2 1 1 3 3 4 1 2 4 4 3 4 4 4 3 2 3 3 4 1 2 4 1 3 4 3 2 3 2 1 3 1 4 4 1 4 3 1 3 2 1 1 3 3 3 4 2 2 2 1 4 2 2 3 2 3 2 1 1 3 3 4 2 1 1 4 4 1 4 3 3 2 4 1 1 3 1 1...
output:
665904082
result:
ok 1 number(s): "665904082"
Test #10:
score: 0
Accepted
time: 45ms
memory: 66612kb
input:
2000 2 3 1 5 2 3 3 2 2 5 5 2 1 4 2 1 2 1 5 2 5 2 5 2 1 3 4 5 5 1 4 3 4 1 1 4 3 4 4 2 3 3 1 4 3 4 3 3 3 1 5 5 1 2 5 2 4 4 2 4 1 3 3 5 2 3 2 2 3 2 3 4 4 1 1 1 2 3 1 1 3 4 1 4 5 5 4 3 5 5 5 2 2 1 2 1 3 3 5 5 2 4 1 5 3 3 5 1 2 5 4 3 5 2 1 1 4 5 3 1 3 4 2 4 5 4 5 3 3 4 1 4 2 2 4 2 3 1 4 3 1 5 5 1 4 4 4 3...
output:
469569800
result:
ok 1 number(s): "469569800"
Test #11:
score: 0
Accepted
time: 47ms
memory: 66624kb
input:
2000 4 2 2 1 4 3 1 3 3 4 3 5 5 6 3 5 6 1 1 3 2 5 3 6 5 2 2 4 6 1 5 2 2 2 5 3 4 6 1 5 4 1 2 6 3 4 4 6 3 2 2 1 2 4 4 1 4 6 4 3 6 2 5 6 1 1 4 1 2 2 4 6 3 4 4 6 6 4 6 2 4 4 2 1 5 6 5 6 1 5 4 3 5 1 2 1 1 2 6 6 3 2 5 2 6 6 4 3 4 5 2 2 3 2 1 2 6 3 4 2 1 5 2 1 6 3 1 1 2 1 4 3 6 2 4 5 6 2 4 2 6 3 2 5 5 3 5 4...
output:
750570608
result:
ok 1 number(s): "750570608"
Test #12:
score: 0
Accepted
time: 43ms
memory: 66640kb
input:
2000 1 3 1 4 6 7 2 2 3 1 2 6 4 2 6 5 1 1 4 3 7 7 1 6 4 6 3 2 5 7 5 4 1 6 7 3 1 7 7 5 5 2 3 1 7 4 5 3 4 3 1 3 4 1 4 6 6 7 1 6 2 3 6 2 6 1 7 6 3 2 1 7 1 7 4 3 1 1 2 1 4 6 5 3 3 7 3 1 1 4 1 4 1 4 1 4 5 3 5 2 6 6 2 1 5 6 5 2 6 5 4 7 2 3 3 7 1 7 5 7 4 5 1 3 3 6 1 5 5 6 2 2 7 1 6 7 7 4 2 2 4 2 6 7 6 7 1 5...
output:
271631582
result:
ok 1 number(s): "271631582"
Test #13:
score: 0
Accepted
time: 50ms
memory: 66592kb
input:
2000 6 4 8 6 3 2 5 3 4 2 6 5 1 1 5 1 7 7 7 3 5 3 8 2 7 4 4 2 7 1 7 8 7 3 6 2 7 6 4 5 5 4 6 5 8 1 7 8 5 8 5 3 3 4 2 4 6 8 4 6 7 8 5 8 2 6 3 6 6 6 1 6 1 2 5 5 2 6 8 8 5 5 1 3 3 2 2 5 7 8 1 2 1 3 1 8 7 5 6 2 7 2 5 8 7 4 1 5 6 7 7 8 8 6 3 4 5 4 1 7 2 4 5 6 6 2 3 8 7 8 8 7 3 2 6 2 7 2 4 6 4 4 4 8 4 3 4 4...
output:
317633495
result:
ok 1 number(s): "317633495"
Test #14:
score: 0
Accepted
time: 46ms
memory: 66616kb
input:
2000 4 5 7 1 2 4 1 8 3 1 3 2 7 3 2 2 7 4 4 9 1 6 3 4 4 2 4 7 8 3 3 9 7 1 3 4 6 7 5 3 6 5 3 4 4 3 3 5 4 1 9 8 5 8 9 1 4 5 8 2 3 3 9 5 5 1 3 9 7 7 3 7 3 4 5 3 6 2 3 1 8 9 1 2 5 1 5 2 5 9 4 6 2 8 5 1 3 8 8 3 6 7 7 2 8 6 9 8 8 9 2 3 6 6 8 5 9 7 2 8 7 4 8 5 7 1 5 4 7 3 6 1 5 9 6 5 6 9 1 9 2 2 1 7 9 2 6 9...
output:
997354671
result:
ok 1 number(s): "997354671"
Test #15:
score: 0
Accepted
time: 46ms
memory: 66716kb
input:
2000 5 2 5 1 3 3 1 6 6 7 8 1 3 9 6 2 8 1 10 10 1 2 4 7 9 5 8 6 10 5 9 10 2 4 7 9 4 7 6 9 5 2 4 1 10 9 7 8 10 1 10 8 3 7 2 2 10 8 10 4 2 10 6 4 1 7 8 9 5 5 5 1 1 4 1 9 3 4 3 2 8 2 10 10 7 3 4 6 1 2 3 8 1 1 10 3 10 4 1 5 2 1 3 3 7 6 7 5 1 3 4 1 3 1 10 5 1 1 7 2 4 7 1 1 4 8 4 4 2 1 1 4 7 5 1 5 1 4 8 4 ...
output:
436029916
result:
ok 1 number(s): "436029916"
Extra Test:
score: 0
Extra Test Passed