CSES - Putka Open 2015 – 2/6 - Results
Submission details
Task:Kertotaulu
Sender:
Submission time:2015-08-15 15:58:23 +0300
Language:C++
Status:READY
Result:26
Feedback
groupverdictscore
#1ACCEPTED26
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1details
#2ACCEPTED0.05 s1details
#3ACCEPTED0.05 s1details
#4ACCEPTED0.06 s1details
#5ACCEPTED0.04 s1details
#60.06 s2details
#70.05 s2details
#80.05 s2details
#90.06 s2details
#100.05 s2details
#110.04 s3details
#12ACCEPTED0.06 s3details
#130.05 s3details
#140.05 s3details
#15ACCEPTED0.06 s3details

Code

#include <iostream>
using namespace std;

typedef long long ll;
#define MOD 1000000007LL

inline ll mod(ll num) {
    if (num < 0LL) num += MOD;
    return num%MOD;
}

ll calc(ll row, ll col) {
    ll mm1  = mod(col * (col+1LL)) / 2LL;
    ll rr1 = mod(row * (row+1LL)) / 2LL;
    return mod(mm1 * rr1);
}

int main() {
    ll row1,col1,row2,col2;
    cin >> row1 >> col1 >> row2 >> col2;
    ll total = calc(row2,col2);
    ll top = calc(row1-1LL, col2);
    ll left = calc(row2, col1-1LL);
    ll tl = calc(row1-1LL, col1-1LL);
    cout << mod (total - top - left + tl) << endl;
    return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
242 232 976 976

correct output
417796293

user output
417796293

Test 2

Group: 1

Verdict: ACCEPTED

input
12 645 476 899

correct output
335735446

user output
335735446

Test 3

Group: 1

Verdict: ACCEPTED

input
435 460 792 681

correct output
816738894

user output
816738894

Test 4

Group: 1

Verdict: ACCEPTED

input
318 389 441 799

correct output
488457695

user output
488457695

Test 5

Group: 1

Verdict: ACCEPTED

input
211 640 623 951

correct output
744563022

user output
744563022

Test 6

Group: 2

Verdict:

input
201976 387454 920309 673120

correct output
946933548

user output
903066661

Test 7

Group: 2

Verdict:

input
779381 684472 984138 828099

correct output
121907300

user output
410138600

Test 8

Group: 2

Verdict:

input
284954 437564 777701 638386

correct output
321734745

user output
840611083

Test 9

Group: 2

Verdict:

input
296035 308490 853604 668978

correct output
802693678

user output
894308525

Test 10

Group: 2

Verdict:

input
460731 148462 619190 626173

correct output
264761756

user output
751653627

Test 11

Group: 3

Verdict:

input
381626897 590403175 501559980 ...

correct output
258247883

user output
193241325

Test 12

Group: 3

Verdict: ACCEPTED

input
597399975 685346584 618318138 ...

correct output
390332938

user output
390332938

Test 13

Group: 3

Verdict:

input
247307039 323856912 812562646 ...

correct output
89821592

user output
482098655

Test 14

Group: 3

Verdict:

input
900181910 768404361 943052600 ...

correct output
242545884

user output
274949149

Test 15

Group: 3

Verdict: ACCEPTED

input
815 528 999999994 999999992

correct output
103780099

user output
103780099