CSES - COCI 2006/2007 #4 - Results
Submission details
Task:Zbrka
Sender:untokarila
Submission time:2019-07-26 15:34:06 +0300
Language:C++11
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.03 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.07 sdetails
#12ACCEPTED0.08 sdetails

Code

#include <bits/stdc++.h>
#define P 1000000007
#define ll long long

using namespace std;

ll d[2][1010101], z = 1, s = 0;

int main(){
    int n, c;
    cin >> n >> c;

    d[1][1] = 1;

    for(int i=1; i<=n; i++){
        z += i-1;
        int h = (z+1)/2;
        for(int j=1; j<=h && j<=c+1; j++){
            d[s][j] = d[s][j-1]+d[s^1][j];
            if(j>i) d[s][j] -= d[s^1][j-i];
            if(d[s][j]<0) d[s][j]+=P;
            d[s][j]%=P;
        }

        if(z&1){
            for(int j=1; j<h && j<=c+1; j++){
                d[s][j+h] = d[s][h-j];
            }
        } else {
            for(int j=1; j<h+1 && j<=c+1; j++){
                d[s][j+h] = d[s][h-j+1];
            }
        }

        s^=1;
    }

    cout << d[s^1][c+1];
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1 1

correct output
0

user output
0

Test 2

Verdict: ACCEPTED

input
9 36

correct output
1

user output
1

Test 3

Verdict: ACCEPTED

input
9 37

correct output
0

user output
0

Test 4

Verdict: ACCEPTED

input
20 191

correct output
0

user output
0

Test 5

Verdict: ACCEPTED

input
51 93

correct output
652564375

user output
652564375

Test 6

Verdict: ACCEPTED

input
150 15

correct output
906085333

user output
906085333

Test 7

Verdict: ACCEPTED

input
432 10000

correct output
532401236

user output
532401236

Test 8

Verdict: ACCEPTED

input
987 4

correct output
621481900

user output
621481900

Test 9

Verdict: ACCEPTED

input
999 931

correct output
502211067

user output
502211067

Test 10

Verdict: ACCEPTED

input
999 5000

correct output
722028249

user output
722028249

Test 11

Verdict: ACCEPTED

input
999 8234

correct output
263421764

user output
263421764

Test 12

Verdict: ACCEPTED

input
1000 10000

correct output
463544056

user output
463544056