Submission #3880377


Source Code Expand

#include <stdio.h>  
#include <algorithm>  
#include <assert.h>
#include <bitset>
#include <cmath>  
#include <complex>  
#include <deque>  
#include <functional>  
#include <iostream>  
#include <limits.h>  
#include <map>  
#include <math.h>  
#include <queue>  
#include <set>  
#include <stdlib.h>  
#include <string.h>  
#include <string>  
#include <time.h>  
#include <unordered_map>  
#include <unordered_set>  
#include <vector>  

#pragma warning(disable:4996)  
#pragma comment(linker, "/STACK:336777216")  
using namespace std;

#define mp make_pair  
#define Fi first  
#define Se second  
#define pb(x) push_back(x)  
#define szz(x) ((int)(x).size())  
#define rep(i, n) for(int i=0;i<n;i++)  
#define all(x) (x).begin(), (x).end()  
#define ldb ldouble  

typedef unsigned int uint;
typedef tuple<int, int, int> t3;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair <ll, int> pli;
typedef pair <db, db> pdd;

int IT_MAX = 1 << 19;
const ll MOD = 1000000007;
const int INF = 0x3f3f3f3f;
const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
const db PI = acos(-1);
const db ERR = 1e-10;

const int MX = 250005;
const int P1 = 1000000223, P2 = 1000000433;
const int Q1 = 739777249, Q2 = 759391002;
const int R1 = 886220847, R2 = 804140220;

pii operator-(pii l, pii r){ return pii((l.first + P1 - r.first) % P1, (l.second + P2 - r.second) % P2); }
pii operator+(pii l, pii r){ return pii((l.first + r.first) % P1, (l.second + r.second) % P2); }
pii operator*(pii l, pii r){ return pii((ll)l.first * r.first % P1, (ll)l.second * r.second % P2); }

char D[MX];
pii DB[MX];

int main()
{
	int N;
	scanf("%d", &N);
	scanf("%s", D);
	pii v = pii(0, 0), u = pii(0, 0), w = pii(1, 1);
	pii cur = pii(1, 1);
	map<pii, int> X;
	for(int i = 0; i < N; i++){
		if(D[i] == '<') cur = cur * pii(R1, R2);
		if(D[i] == '>') cur = cur * pii(Q1, Q2);
		if(D[i] == '+') v = v + cur;
		if(D[i] == '-') v = v - cur;
		DB[i] = v;
		X[v] += 1;
	}
	ll ans = 0;
	for(int i = 0; i < N; i++){
		pii x = v*w+u;
		ans += X[x];
		X[DB[i]] -= 1;
		if(D[i] == '<') w = w * pii(R1, R2);
		if(D[i] == '>') w = w * pii(Q1, Q2);
		if(D[i] == '+') u = u + w;
		if(D[i] == '-') u = u - w;
	}
	printf("%lld\n", ans);
}

Submission Info

Submission Time
Task F - Eating Symbols Hard
User zigui
Language C++14 (GCC 5.4.1)
Score 1200
Code Size 2389 Byte
Status AC
Exec Time 372 ms
Memory 33664 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:69:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N);
                 ^
./Main.cpp:70:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", D);
                ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1200 / 1200
Status
AC × 3
AC × 86
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 3.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 4.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 5.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 6.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, 65.txt, 66.txt, 67.txt, 68.txt, 69.txt, 7.txt, 70.txt, 71.txt, 72.txt, 73.txt, 74.txt, 75.txt, 76.txt, 77.txt, 78.txt, 8.txt, 9.txt, a.txt, b.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
1.txt AC 1 ms 256 KiB
10.txt AC 73 ms 6656 KiB
11.txt AC 75 ms 6912 KiB
12.txt AC 42 ms 3456 KiB
13.txt AC 43 ms 3456 KiB
14.txt AC 28 ms 2560 KiB
15.txt AC 27 ms 2560 KiB
16.txt AC 179 ms 17920 KiB
17.txt AC 48 ms 3840 KiB
18.txt AC 81 ms 4992 KiB
19.txt AC 114 ms 11648 KiB
2.txt AC 2 ms 256 KiB
20.txt AC 43 ms 3456 KiB
21.txt AC 26 ms 2560 KiB
22.txt AC 168 ms 17920 KiB
23.txt AC 45 ms 3712 KiB
24.txt AC 82 ms 4992 KiB
25.txt AC 87 ms 8576 KiB
26.txt AC 42 ms 3456 KiB
27.txt AC 27 ms 2560 KiB
28.txt AC 199 ms 18048 KiB
29.txt AC 48 ms 3840 KiB
3.txt AC 5 ms 896 KiB
30.txt AC 82 ms 4992 KiB
31.txt AC 178 ms 17152 KiB
32.txt AC 43 ms 3456 KiB
33.txt AC 27 ms 2560 KiB
34.txt AC 182 ms 17920 KiB
35.txt AC 49 ms 3840 KiB
36.txt AC 86 ms 4992 KiB
37.txt AC 113 ms 11008 KiB
38.txt AC 42 ms 3456 KiB
39.txt AC 27 ms 2560 KiB
4.txt AC 201 ms 17920 KiB
40.txt AC 178 ms 17920 KiB
41.txt AC 47 ms 3712 KiB
42.txt AC 83 ms 4992 KiB
43.txt AC 102 ms 10112 KiB
44.txt AC 42 ms 3328 KiB
45.txt AC 27 ms 2560 KiB
46.txt AC 20 ms 2432 KiB
47.txt AC 10 ms 2432 KiB
48.txt AC 9 ms 2432 KiB
49.txt AC 75 ms 7680 KiB
5.txt AC 182 ms 18048 KiB
50.txt AC 293 ms 33664 KiB
51.txt AC 8 ms 2432 KiB
52.txt AC 168 ms 18048 KiB
53.txt AC 48 ms 3840 KiB
54.txt AC 82 ms 4992 KiB
55.txt AC 156 ms 13824 KiB
56.txt AC 42 ms 3456 KiB
57.txt AC 27 ms 2560 KiB
58.txt AC 236 ms 21248 KiB
59.txt AC 204 ms 21248 KiB
6.txt AC 46 ms 3712 KiB
60.txt AC 160 ms 19456 KiB
61.txt AC 163 ms 19456 KiB
62.txt AC 372 ms 32256 KiB
63.txt AC 372 ms 32256 KiB
64.txt AC 77 ms 7168 KiB
65.txt AC 77 ms 7168 KiB
66.txt AC 77 ms 7296 KiB
67.txt AC 212 ms 22912 KiB
68.txt AC 139 ms 15232 KiB
69.txt AC 149 ms 16768 KiB
7.txt AC 48 ms 3840 KiB
70.txt AC 194 ms 19072 KiB
71.txt AC 189 ms 20224 KiB
72.txt AC 222 ms 21504 KiB
73.txt AC 197 ms 19840 KiB
74.txt AC 206 ms 20352 KiB
75.txt AC 204 ms 19456 KiB
76.txt AC 262 ms 22272 KiB
77.txt AC 192 ms 17920 KiB
78.txt AC 264 ms 22912 KiB
8.txt AC 84 ms 4992 KiB
9.txt AC 82 ms 4992 KiB
a.txt AC 1 ms 256 KiB
b.txt AC 1 ms 256 KiB
sample1.txt AC 1 ms 256 KiB
sample2.txt AC 1 ms 256 KiB
sample3.txt AC 1 ms 256 KiB