QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#727394#881. Gig Combinatoricsgambit#WA 1ms5808kbC++171.5kb2024-11-09 13:05:382024-11-09 13:05:39

Judging History

This is the latest submission verdict.

  • [2024-11-09 13:05:39]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 5808kb
  • [2024-11-09 13:05:38]
  • Submitted

answer

#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
ll arr[1000001];
ll preSum[1000001][2]; // [i][1, 2]
ll MOD = 1'000'000'007;

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int n; cin >> n;

    ll total3=0;
    for(int i=0;i<n;i++){
        cin>>arr[i];
        if(arr[i]==3) total3++;
    }

    vector<pair<ll, ll>> lastTwo;
    preSum[0][0]=preSum[0][1]=0;
    if(arr[0]==1) preSum[0][0]++;
    else if(arr[0]==2) preSum[0][1]++;
    else lastTwo.push_back({0, total3});

    for(int i=1;i<n;i++){
        preSum[i][0] = preSum[i-1][0];
        preSum[i][1] = preSum[i-1][1];
        if(arr[i]==1) preSum[i][0]++;
        else if(arr[i]==3) preSum[i][1]++;
        else lastTwo.push_back({preSum[i][0], total3-preSum[i][1]});
    }

    ll cnt=0, preSumfor1=0;
    for(int i=0;i<lastTwo.size();i++){
        cnt = (cnt+lastTwo[i].first*lastTwo[i].second)%MOD;
        // cout << lastTwo[i].first*lastTwo[i].second << ' ';
        if(i>=1) {
            ll last1 = lastTwo[i-1].first;
            cnt = (cnt+last1*lastTwo[i].second)%MOD; // length==2
            // cout << last1*lastTwo[i].second << ' ';
            if(i>=2) {
                cnt = (cnt+(preSumfor1-last1 + MOD) % MOD*lastTwo[i].second % MOD*2)%MOD; // length>2
                // cout << (preSumfor1-last1 + MOD)*lastTwo[i].second*2 << ' ';
            }
        }
        (preSumfor1 += lastTwo[i].first) %= MOD;
        // cout << cnt << '\n';
    }
    cout << cnt;



    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 5808kb

input:

9
1 1 1 2 2 2 3 3 3

output:

63

result:

ok answer is '63'

Test #2:

score: 0
Accepted
time: 1ms
memory: 5556kb

input:

8
1 2 1 2 3 1 2 3

output:

15

result:

ok answer is '15'

Test #3:

score: -100
Wrong Answer
time: 1ms
memory: 5696kb

input:

310
1 2 3 2 2 3 2 3 2 1 2 3 2 3 2 1 2 1 1 2 1 2 3 3 2 2 3 3 2 2 1 1 2 3 2 2 3 2 3 2 1 2 3 2 3 2 1 2 1 1 2 1 2 3 3 2 2 3 3 2 2 2 1 2 3 2 2 3 2 3 2 1 2 3 2 3 2 1 2 1 1 2 1 2 3 3 2 2 3 3 2 2 2 1 2 3 2 2 3 2 3 2 1 2 3 2 3 2 1 2 1 1 2 1 2 3 3 2 2 3 3 2 2 1 1 2 3 2 2 3 2 3 2 1 2 3 2 3 2 1 2 1 1 2 1 2 3 3 ...

output:

11565538

result:

wrong answer expected '265702265', found '11565538'