QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#496464#6810. Array Concatenation333zhanWA 8ms4624kbC++201.8kb2024-07-28 10:50:472024-07-28 10:50:47

Judging History

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

  • [2024-07-28 10:50:47]
  • 评测
  • 测评结果:WA
  • 用时:8ms
  • 内存:4624kb
  • [2024-07-28 10:50:47]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int mod = 1E9 + 7;

inline int read () {
    int w = 1, s = 0; char ch = getchar ();
    for (; ! isdigit (ch); ch = getchar ()) if (ch == '-') w = -1;
    for (; isdigit (ch); ch = getchar ()) s = (s << 1) + (s << 3) + (ch ^ 48);
    return s * w;
}

int power (int x, int p) {
    int ans = 1;
    for (; p; p >>= 1) {
        if (p & 1) ans = ans * x % mod;
        x = x * x % mod;
    }    
    return ans;
}

using i128 = __int128;

void solve () {
    int n, m;
    cin >> n >> m;

    vector <int> a (n + 1);
    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
    }

    auto b = a;
    reverse (b.begin () + 1, b.end ());

    i128 pre1 = 0, pre2 = 0;
    for (int i = 1; i <= n; i ++) {
        pre1 += a[i] * (n - i + 1);
        pre2 += b[i] * (n - i + 1);
    }

    const int N = power (2, m - 1);
    const int D = 2 * n;

    auto work = [&] (int a1) {
        return (a1 * N % mod - N * (N - 1) / 2 % mod * D % mod + mod) % mod;
    };

    int ans = 0;

    if (pre1 > pre2) {
        for (int i = 1; i <= n; i ++) {
            ans += work ((N * D % mod - 2 * n + (n - i + 1) + mod) % mod) * a[i];
            ans %= mod;
            ans += work ((N * D % mod - n + (n - i + 1) + mod) % mod) * a[i];
            ans %= mod;
        }
    } else {
        for (int i = 1; i <= n; i ++) {
            ans += work ((N * D % mod - 2 * n + (n - i + 1) + mod) % mod) * a[i];
            ans %= mod;
            ans += work ((N * D % mod - n + i + mod) % mod) * a[i];
            ans %= mod;
        }
    }


    cout << ans << '\n';
} 

signed main () {
	ios::sync_with_stdio (false);
    cin.tie (nullptr);
    
	int T = 1; 
	// cin >> T;
	// T = read ();

	while (T --) {
		solve ();
	}
	
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3604kb

input:

2 1
1 2

output:

15

result:

ok single line: '15'

Test #2:

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

input:

5 10
26463 39326 86411 75307 85926

output:

806275469

result:

ok single line: '806275469'

Test #3:

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

input:

3 10000
329770536 859936159 696111818

output:

325223749

result:

ok single line: '325223749'

Test #4:

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

input:

10 100000
910385778 832405357 79882277 740539785 58009121 361679935 208356273 191444931 327043571 40502864

output:

551220212

result:

ok single line: '551220212'

Test #5:

score: 0
Accepted
time: 5ms
memory: 4624kb

input:

99998 99999
424541359 970848132 124944765 190568793 218987145 439687684 674898132 26756266 495705287 999481800 123311748 808192729 480063991 282558300 432664601 480692564 771223766 592954167 648647039 80490877 501738111 3075724 426165921 557518328 209501102 786985447 129062653 705971029 763019010 16...

output:

371554090

result:

ok single line: '371554090'

Test #6:

score: 0
Accepted
time: 2ms
memory: 3584kb

input:

23854 89381
394875321 358990454 858102462 384724857 275727903 97926601 474697159 911286664 206848005 33299065 794156923 141542667 429367570 397169821 74508725 520716485 677478792 133016266 58719731 925502886 956794304 194692492 985435726 883349224 42102293 676396529 839744928 366681778 656265608 115...

output:

426677952

result:

ok single line: '426677952'

Test #7:

score: 0
Accepted
time: 7ms
memory: 4412kb

input:

83492 48249
70494500 885620970 315369497 739608603 637096477 10395600 246855095 506270453 443170180 577100499 577449412 138165292 246928155 689186056 498722336 790825887 594302101 414730621 572006760 546794452 98888789 727318449 857676435 114468371 676126291 935100863 178502984 187768465 696814401 6...

output:

510020598

result:

ok single line: '510020598'

Test #8:

score: 0
Accepted
time: 8ms
memory: 4620kb

input:

99824 43532
774340602 936278614 964709803 488385916 459911693 6573867 299867606 777690440 87564223 407397293 234189335 321895358 125495230 145168763 182375587 226125349 301825885 840410768 846358234 257084607 187826907 26856116 65896632 752477170 556078517 496528163 816563279 928793952 38603811 8858...

output:

263266590

result:

ok single line: '263266590'

Test #9:

score: -100
Wrong Answer
time: 8ms
memory: 4604kb

input:

100000 40
735211086 438848581 883369263 411520254 96701572 639546923 41849752 603158600 721918949 2491206 846495417 323507652 718479900 610177876 169869700 545169629 512881910 798460780 380319407 851809813 556619434 326106153 766145881 413339664 941433832 816866760 79378460 799224104 568687839 84804...

output:

33458924

result:

wrong answer 1st lines differ - expected: '306284744', found: '33458924'