Submission details
Task:Kaaleppi's run
Sender:OOliOO_slayer
Submission time:2016-10-04 18:15:56 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#10.74 sdetails
#21.03 sdetails
#30.92 sdetails
#40.35 sdetails
#50.73 sdetails
#60.36 sdetails
#70.61 sdetails
#80.09 sdetails
#91.02 sdetails
#100.54 sdetails
#111.05 sdetails
#121.05 sdetails
#131.06 sdetails
#140.88 sdetails
#151.09 sdetails
#161.08 sdetails
#171.07 sdetails
#180.81 sdetails
#190.88 sdetails
#201.12 sdetails
#211.03 sdetails
#221.10 sdetails
#231.02 sdetails
#241.08 sdetails
#251.03 sdetails
#260.81 sdetails
#271.05 sdetails
#281.14 sdetails
#291.03 sdetails
#301.06 sdetails

Code

#include <stdio.h> // include before iostream for faster scanf
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <utility>
#include <set>
#include <unordered_set>
#include <cmath>
#include <math.h>
#include <queue>
#include <stdlib.h>
#include <string.h>
#include <sstream>
#include <tuple>
#include <utility>
#include <iomanip>
#include <iterator>

using namespace std;
typedef long long LL;

#define printv(printVec) for (auto printVecIter : (printVec)) cout << printVecIter << " "; cout << endl;

// g++-4.8 -Wall -Wshadow -std=c++11 a.cpp && ./a.out

int SZ = 500;

int main() {
	std::ios::sync_with_stdio(false);cin.tie(0);
	int n, q;
	cin >> n>>q;
	
	typedef pair<int,int> pii;
	typedef priority_queue<pii, vector<pii>, greater<pii>> pq;

	vector<int> v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	//vector<vector<pair<int,int>>> sq(n/SZ + 2);
	vector<pq> sq(n/SZ + 2);
	vector<LL> sums(n/SZ + 2);
	for (int i = 0; i < n; i++) {
		sq[i/SZ].emplace(v[i],i);
		sums[i/SZ] += v[i];
	}

	while (q--) {
		int type; cin >> type;
		if (type == 2) {
			int l,r; cin>>l>>r; l--; r--;
			LL ans = 0;
			for (int i = l; i <= r; i++) {
				if (i + SZ < r && i % SZ == 0) {
					int block = i / SZ;
					ans += sums[block];
					i += SZ - 1;
				} else {
					ans += v[i];
				}
			}
			cout << ans <<"\n";
			continue;
		}

		int l,r,k; cin>>l>>r>>k; l--;r--;
		for (int i = l; i <= r; i++) {
			if (i + SZ < r && i % SZ == 0) {
				int block = i / SZ;
				while (sq[block].top().first >= k) {
					int val, idx;
					tie(val, idx) = sq[block].top();
					sq[block].pop();
					sums[block] -= v[idx];
					v[idx] = v[idx] % k;
					sums[block] += v[idx];
					sq[block].emplace(v[idx], idx);
				}
				i += SZ - 1;
			} else {
				sums[i/SZ] -= v[i];
				v[i] = v[i] % k;
				sums[i/SZ] += v[i];
			}
		}
		
	}
	
}

















Test details

Test 1

Verdict:

input
89384 130887
681692778 714636916 957747794 ...

correct output
3568050627345
4840079633895
4979742617229
3278015536236
8227531490884
...

user output
3568050627345
13654759978827
14024071434033
9198176737931
22303923028803
...

Test 2

Verdict:

input
110132 199724
847570814 404978775 106367318 ...

correct output
1427981161528
6256316123063
1076159707539
1525408287745
12452883393272
...

user output
2628529438978
28546880937283
1076159707539
7257897810785
47169003267418
...

Test 3

Verdict:

input
87738 181088
562855988 84781032 926253527 7...

correct output
5716947015138
14424560752621
3616168262601
807226877121
83465638349
...

user output
8714679884220
30282178990297
3616168262601
4323394039299
161422698693
...

Test 4

Verdict:

input
158114 63223
462120872 498977056 463223297 ...

correct output
49126485898374
2184603743669
23961846093944
2848201705457
1555275733993
...

user output
50640231313584
2184603743669
25559068631932
4874657701819
1555275733993
...

Test 5

Verdict:

input
140966 138126
812693646 252682523 265941575 ...

correct output
22817793228905
17812780427335
2620152643855
2866263272648
5009940526564
...

user output
22817793228905
31074729236070
2620152643855
33197888732935
44024689869416
...

Test 6

Verdict:

input
70958 64685
892097055 124053711 989231834 ...

correct output
460637799671
1475480287645
3957671266357
15189222079188
8068328407783
...

user output
1839588811991
3631188358885
7329964091273
23610475009800
11176491693093
...

Test 7

Verdict:

input
97044 123753
707926206 599809760 994891636 ...

correct output
30504891581
10585850358828
3752130598295
4274674534895
18961318419991
...

user output
30504891581
10585850358828
6056878139165
6161732436865
33525554972009
...

Test 8

Verdict:

input
25458 9623
313230374 496638350 562858459 ...

correct output
348560018107
5323872135694
28101423541
5060603534783
8455422896644
...

user output
2266822691657
7527963026063
183827544641
7068962439417
9303847118237
...

Test 9

Verdict:

input
161390 197159
674040671 808300128 26080705 9...

correct output
6338494962280
9308586268339
1426570147836
619729941732
531996459059
...

user output
6338494962280
9308586268339
1426570147836
10907750236640
5567680427915
...

Test 10

Verdict:

input
183342 96224
100979382 831921884 895353059 ...

correct output
4146493190203
29755052359871
21010351347658
4994403502744
4874048764601
...

user output
4146493190203
29755052359871
30924428948663
7065829600929
7884308903730
...

Test 11

Verdict:

input
200000 200000
163516132 88718522 960501684 3...

correct output
8705161776177
16560680715170
4529140494185
22215511151267
307663601912
...

user output
8705161776177
16560680715170
12544855303272
32057471535257
2199600281131
...

Test 12

Verdict:

input
200000 200000
661328518 295428034 543539165 ...

correct output
44125316835086
12534063038672
13779878669135
1110457357385
53890550863397
...

user output
44125316835086
12534063038672
13779878669135
1110457357385
67946419370846
...

Test 13

Verdict:

input
200000 200000
835492064 858947595 489705704 ...

correct output
7123736494948
18343643800481
4061553943570
22394824679259
17059560008797
...

user output
7123736494948
25452638148351
7529667834397
57503804062789
47035046377336
...

Test 14

Verdict:

input
200000 200000
357734101 493956933 250155363 ...

correct output
19974989429712
60252072248233
45678027522989
9906096645143
5796576869969
...

user output
19974989429712
60252072248233
59069058772529
9906096645143
16779924379947
...

Test 15

Verdict:

input
200000 200000
366056556 485208318 898983115 ...

correct output
18324415144074
1960721236822
262868810399
418650395034
4926733633202
...

user output
46263781093866
25426534391584
262868810399
418650395034
21849949668179
...

Test 16

Verdict:

input
200000 200000
696545081 391575800 525194671 ...

correct output
464526195732
10421706643804
25715510077679
60768424352308
47109574794106
...

user output
464526195732
11136964838866
25715510077679
69297100935034
56040150637468
...

Test 17

Verdict:

input
200000 200000
785409780 12543965 724522794 5...

correct output
76078073776916
12550437486909
1961851552333
3704172183345
958583269110
...

user output
76078073776916
12550437486909
3870841721749
5768850238545
7380638171326
...

Test 18

Verdict:

input
200000 200000
239188181 76186945 538812873 7...

correct output
9965856033901
22841982053808
20057247487740
22036414753777
743665836923
...

user output
11925480590401
30690465160874
20057247487740
44907810939884
3906411003791
...

Test 19

Verdict:

input
200000 200000
571088696 713137765 869808231 ...

correct output
27201871131366
1773925165749
21331314450495
44597922896
11839927329463
...

user output
32453618697066
1773925165749
21331314450495
224855776364
31294899765315
...

Test 20

Verdict:

input
200000 200000
94357126 167500952 625424533 7...

correct output
19827596131079
1587873460955
56673140705204
1825224125411
14126369552503
...

user output
19827596131079
1587873460955
56673140705204
1825224125411
14126369552503
...

Test 21

Verdict:

input
200000 200000
902289752 980717302 482700427 ...

correct output
42722728269555
32652085471516
7532635788308
26365360928406
31706902704494
...

user output
42722728269555
33910254543676
7532635788308
40292845056196
62681824688104
...

Test 22

Verdict:

input
200000 200000
234861789 896308950 585257292 ...

correct output
23148184769579
6264813675999
47314176314048
17697735609162
2251160486380
...

user output
40467856341839
18402994214687
84572988412550
47568738372102
7421047482189
...

Test 23

Verdict:

input
200000 200000
889896556 543224603 961078149 ...

correct output
1713650642846
35249443235523
9622564970592
20993151478096
559043197323
...

user output
8194407977237
45703004014266
17588660684249
20993151478096
2682578044927
...

Test 24

Verdict:

input
200000 200000
995332283 686573056 932431685 ...

correct output
12013196028573
47655633640876
18257672284868
27625651650511
46438192959164
...

user output
12013196028573
47655633640876
18257672284868
27625651650511
46438192959164
...

Test 25

Verdict:

input
200000 200000
946315600 868557890 318443283 ...

correct output
1133762533395
57398145786924
869840469415
29146044858314
35199351262230
...

user output
9969343596262
73694132731517
869840469415
36967426584786
35745112733550
...

Test 26

Verdict:

input
200000 200000
944060128 254626749 68890590 2...

correct output
11055994363482
2657055498612
30597070068344
7792687527844
7661261162964
...

user output
11055994363482
10491525653073
91902013834425
7792687527844
14215964953909
...

Test 27

Verdict:

input
200000 200000
841299688 308557219 620166698 ...

correct output
19393456997210
195469629029
2786427435737
1993020037538
3164725175677
...

user output
28408970868668
195469629029
6185374136388
5000323966270
42591286967403
...

Test 28

Verdict:

input
200000 200000
494252927 946174799 609845025 ...

correct output
15907022632481
27292668068962
441027352490
40834476272262
28481559993407
...

user output
15907022632481
45282686404639
1022454697976
67069550289991
50251449001056
...

Test 29

Verdict:

input
200000 200000
470856857 625269921 288612820 ...

correct output
2046228565150
3617420568401
1053973762226
5913120807902
5419236217968
...

user output
3899974024414
12077848310899
14410078401665
58660194307009
50591254016762
...

Test 30

Verdict:

input
200000 200000
62623182 70087409 956344115 19...

correct output
28081481609073
287568565804
2709243279569
5210936812890
12514447288598
...

user output
28081481609073
4840781263482
17973999281066
21873245464823
65890890366831
...