CSES - Datatähti 2021 alku - Results
Submission details
Task:Alitaulukot
Sender:mikkopal
Submission time:2020-10-08 18:38:36 +0300
Language:C++17
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.01 s1, 2, 3details
#20.01 s1, 2, 3details
#30.01 s1, 2, 3details
#40.01 s1, 2, 3details
#50.01 s1, 2, 3details
#60.01 s2, 3details
#70.01 s2, 3details
#80.01 s2, 3details
#90.01 s2, 3details
#100.01 s2, 3details
#110.14 s3details
#120.28 s3details
#130.28 s3details
#140.28 s3details
#150.16 s3details
#160.22 s3details
#170.22 s3details

Code

#include<bits/stdc++.h>
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
 

 //6 2
//4 7 6 5 6 8
// mitä tapahtuu????
 
typedef long long ll; 
 
const int mx = 1e5;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
#ifndef ONLINE_JUDGE
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
#endif
 
	ll n,m; cin >> n >>m;
	ll a[mx];
	ll ans=n;
	ll last=0;

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

 	deque<ll> minQ;
 	deque<ll> maxQ;

 	ll cnt=0;

 	int start=0;
 	int end=1;

 	minQ.push_back(start);
 	maxQ.push_back(start);
 
 	while (end<n){

 		int num=a[end];

 		while (!minQ.empty() && a[minQ.back()]>=num){
 			minQ.pop_back();
 		}

 		minQ.push_back(end);

 		while (!maxQ.empty() && a[maxQ.back()]<=num){
 			maxQ.pop_back();
 		}

 		maxQ.push_back(end);

 		//minQ alussa välin minimi
 		//maxQ alussa välin maksimi

 		int minIdx=minQ.front();
 		int maxIdx=maxQ.front();
 		int minVal=a[minIdx];
 		int maxVal=a[maxIdx];


 		if (maxVal-minVal>m){
 			cnt++;
 			start++;
 			if (start>minQ.front()){
 				minQ.pop_front();
 			}
 			if (start>maxQ.front()){
 				maxQ.pop_front();
 			}

 		} else {
 			ans++;
 			if (cnt){
 				if (start==end){
 					ans--;
 				}
 				cout << cnt;
 				ans+=((cnt*cnt-3*cnt)/2+1);
 				ans+=((end-last-cnt)*(cnt-1));
 				if (end-start>1){
 					ans++;
 				}
 			}
 			cnt=0;
 			last=start;
 			end++;
 		}
 		cout << a[start] << " " << a[end] << " "<< ans << endl;

 	}
 	// nyt tuplalasketaan
 	cout << ans << start << end << endl; 
 	ans+=((end-start)*(end-start)-3*(end-start))/2+1;

 	cout << ans;



}

Test details

Test 1

Group: 1, 2, 3

Verdict:

input
100 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
5050

user output
1 1 101
1 1 102
1 1 103
1 1 104
1 1 105
...

Test 2

Group: 1, 2, 3

Verdict:

input
100 2
5 5 2 4 3 5 3 4 3 2 3 4 5 4 4 ...

correct output
317

user output
5 2 101
5 2 101
2 2 101
22 4 101
2 3 102
...

Test 3

Group: 1, 2, 3

Verdict:

input
100 10
71 60 61 96 25 10 10 9 84 85 1...

correct output
119

user output
60 60 100
160 61 100
60 96 101
61 96 101
96 96 101
...

Test 4

Group: 1, 2, 3

Verdict:

input
100 990000000
111122929 961821360 578238211 ...

correct output
4006

user output
111122929 578238211 101
111122929 29272319 102
111122929 748186132 103
111122929 66483968 104
111122929 431837446 105
...

Test 5

Group: 1, 2, 3

Verdict:

input
100 1000000000
553190572 453407680 667300705 ...

correct output
5050

user output
553190572 667300705 101
553190572 563823514 102
553190572 614459776 103
553190572 991188064 104
553190572 406430184 105
...

Test 6

Group: 2, 3

Verdict:

input
2000 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
2001000

user output
1 1 2001
1 1 2002
1 1 2003
1 1 2004
1 1 2005
...

Test 7

Group: 2, 3

Verdict:

input
2000 2
4 4 1 4 2 3 1 2 1 3 5 2 2 4 4 ...

correct output
6340

user output
4 1 2001
4 1 2001
1 1 2001
21 4 2001
4 4 2001
...

Test 8

Group: 2, 3

Verdict:

input
2000 10
65 88 33 88 41 10 17 38 22 3 8...

correct output
2413

user output
88 88 2000
188 33 2000
33 33 2000
133 88 2000
88 88 2000
...

Test 9

Group: 2, 3

Verdict:

input
2000 999000000
746120950 772769620 721488968 ...

correct output
1287776

user output
746120950 721488968 2001
746120950 793494482 2002
746120950 447854342 2003
746120950 562057711 2004
746120950 210434493 2005
...

Test 10

Group: 2, 3

Verdict:

input
2000 1000000000
621947980 510355354 756705418 ...

correct output
2001000

user output
621947980 756705418 2001
621947980 390335766 2002
621947980 829929159 2003
621947980 162946731 2004
621947980 407767991 2005
...

Test 11

Group: 3

Verdict:

input
100000 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
5000050000

user output
1 1 100001
1 1 100002
1 1 100003
1 1 100004
1 1 100005
...

Test 12

Group: 3

Verdict:

input
100000 2
3 3 1 3 3 1 1 5 1 2 5 4 1 3 1 ...

correct output
317066

user output
3 1 100001
3 3 100002
3 3 100003
3 1 100004
3 1 100005
...

Test 13

Group: 3

Verdict:

input
100000 10
10 3 6 3 43 60 5 48 15 27 86 4...

correct output
123292

user output
10 6 100001
10 3 100002
10 43 100003
3 43 100003
6 43 100003
...

Test 14

Group: 3

Verdict:

input
100000 999990000
460235639 963048588 47270983 3...

correct output
4946886742

user output
460235639 47270983 100001
460235639 300196793 100002
460235639 759372800 100003
460235639 624878466 100004
460235639 794958419 100005
...

Test 15

Group: 3

Verdict:

input
100000 1000000000
885457070 18257718 927615960 3...

correct output
5000050000

user output
885457070 927615960 100001
885457070 364820075 100002
885457070 57857764 100003
885457070 243025954 100004
885457070 371542406 100005
...

Test 16

Group: 3

Verdict:

input
100000 50000
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
3750075000

user output
1 3 100001
1 4 100002
1 5 100003
1 6 100004
1 7 100005
...

Test 17

Group: 3

Verdict:

input
100000 50000
100000 99999 99998 99997 99996...

correct output
3750075000

user output
100000 99998 100001
100000 99997 100002
100000 99996 100003
100000 99995 100004
100000 99994 100005
...