Submission details
Task:Array
Sender: >--) ) ) )*>
Submission time:2015-09-30 19:22:40 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#10.07 sdetails
#20.15 sdetails
#30.06 sdetails
#40.16 sdetails
#50.15 sdetails
#60.06 sdetails
#70.06 sdetails
#80.08 sdetails
#90.09 sdetails
#100.07 sdetails
#110.08 sdetails
#120.09 sdetails
#130.09 sdetails
#140.07 sdetails
#150.07 sdetails
#160.09 sdetails
#170.08 sdetails
#180.08 sdetails
#190.09 sdetails
#20ACCEPTED0.10 sdetails
#210.07 sdetails

Code

#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
#include <fstream>
#include <cassert>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <vector>
#include <bitset>
#include <cmath>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>

using namespace std;

#define ll long long
#define ld long double
#define ii pair<int,int>
#define si pair<string,int>
#define iii pair<int,ii>
#define vi vector<int>
#define vc vector<char>
#define vs vector<string>
#define msvs map<string,vs>
#define msi map<string,int>
#define mss map<string,int>
#define us unordered_set
#define um unordered_map
#define pq priority_queue
#define pb push_back
#define mp make_pair
#define forall(i,a,b) for (int i=a;i<b;i++)
#define foreach(v,c) for( typeof( (c).begin()) v = (c).begin();  v != (c).end(); ++v)
#define all(a) a.begin(), a.end()
#define in(a,b) ( (b).find(a) != (b).end())
#define fill(a,v) memset(a, v, sizeof a)
#define sz(a) ((int)(a.size()))
#define N (1<<17)
#define M 1000000007
#define I 500000004

vector<ll> a;
vector<ll> s;

ll summa(int i, int j) {
	if (i == 0) return s[j];
	return s[j]-s[i-1];
}

int main()
{
	ll n,x; cin >> n >> x;
	for (int i = 0; i < n; i++) {
		ll t; cin >> t; a.pb(t);
	}
	s.pb(a[0]);
	for (int i = 1; i < n; i++) {
		ll t = s[i-1]+a[i];
		s.pb(t);
	}
	sort(s.begin(),s.end());
	int wa,wb;
	ll c = 0;
	wa = -1; wb = -1;
	for ( wb = 0; wb < n; wb++){
		for(; s[wb] - (wa >= 0 ? s[wa] : 0) < x; wb++);
		while (1) {
			for (; s[wb] - (wa >= 0 ? s[wa] : 0) == x; wa++) c++;
			for (; s[wb] - (wa >= 0 ? s[wa] : 0) > x; wa++);
			if (s[wb]-s[wa] < x) break;
		}
	}
	for(; wa < n; wa++)
		if(s[wb] -s[wa] == x)
			c++;

	cout << c << "\n";
}

Test details

Test 1

Verdict:

input
89384 -6
-1 9 -2 0 0 -1 5 0 -8 9 10 -6 ...

correct output
2029635

user output
48308

Test 2

Verdict:

input
32688 -4
6 0 9 -10 -2 -2 -1 5 -5 -6 9 8...

correct output
321307

user output
(empty)

Test 3

Verdict:

input
11023 2
5 0 -1 9 -10 3 10 -10 1 -3 -8 ...

correct output
146015

user output
10421

Test 4

Verdict:

input
36884 -7
6 8 2 -4 1 7 1 -7 5 3 1 -6 1 -...

correct output
471565

user output
(empty)

Test 5

Verdict:

input
2875 -6
-4 1 -6 -10 -2 -5 9 0 -2 9 -3 ...

correct output
9343

user output
(empty)

Test 6

Verdict:

input
52346 -111
973 629 570 312 541 -117 332 7...

correct output
8791

user output
8264

Test 7

Verdict:

input
55283 298
593 -881 937 901 -91 -622 632 ...

correct output
7351

user output
2465

Test 8

Verdict:

input
93592 -589
951 -193 -855 -692 926 -602 -6...

correct output
26431

user output
0

Test 9

Verdict:

input
98149 942
-816 178 196 -503 654 -474 -64...

correct output
37659

user output
7088

Test 10

Verdict:

input
79573 -346
-161 619 720 182 726 452 -63 -...

correct output
19690

user output
1732

Test 11

Verdict:

input
100000 -9229
-6207 -4894 -1224 8410 -2954 4...

correct output
1969

user output
226

Test 12

Verdict:

input
100000 4655
134 4684 8364 -7381 -1874 3429...

correct output
2353

user output
1363

Test 13

Verdict:

input
100000 -5901
-4907 7494 7673 -3917 -3223 -7...

correct output
2345

user output
4358

Test 14

Verdict:

input
100000 -2507
-845 -6674 -3174 9309 -1411 53...

correct output
2242

user output
4334

Test 15

Verdict:

input
100000 -4850
-9232 -2843 5422 -5336 -2835 -...

correct output
3753

user output
6952

Test 16

Verdict:

input
100000 -745023
-561148 78606 440682 608892 -3...

correct output
27

user output
23

Test 17

Verdict:

input
100000 987216
602043 416718 216813 720665 -6...

correct output
41

user output
48

Test 18

Verdict:

input
100000 -140762
-813926 -641015 5926 -87604 -8...

correct output
43

user output
82

Test 19

Verdict:

input
100000 -828680
-53023 -23367 -91278 162438 82...

correct output
27

user output
16

Test 20

Verdict: ACCEPTED

input
100000 -731243595
-728764339 -159138563 36776806...

correct output
0

user output
0

Test 21

Verdict:

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

correct output
5000050000

user output
131584