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 |
|
|
| 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 |