Submission #3245894
Source Code Expand
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<queue>
#include<cmath>
#include<cstdlib>
#include<set>
#define LL long long
#define LD long double
using namespace std;
const int NN=250000 +117;
const int MM= +117;
#define mod1 998244353
#define mod2 1004535809
int read(){
int fl=1,x;char c;
for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar());
if(c=='-'){fl=-1;c=getchar();}
for(x=0;c>='0'&&c<='9';c=getchar())
x=(x<<3)+(x<<1)+c-'0';
return x*fl;
}
void open(){
freopen("99f.in","r",stdin);
//freopen(".out","w",stdout);
}
void close(){
fclose(stdin);
fclose(stdout);
}
int m,n;
multiset<LL> a;
char s[NN]={};
LL ksm(LL a,LL b){
LL ret=1;
while(b){
if(b&1){
ret*=a;
ret%=mod1;
}
a*=a;
a%=mod1;
b>>=1;
}
return ret;
}
int main(){
//open();
n=read();
scanf("%s",s);
LL res=0;
LL rev=ksm(mod2,mod1-2);
LL p=1;
for(int i=0;i<n;++i){
if(s[i]=='+'){
res+=p;
res%=mod1;
}
if(s[i]=='-'){
res+=mod1-p;
res%=mod1;
}
if(s[i]=='<'){
p*=rev;
p%=mod1;
}
if(s[i]=='>'){
p*=mod2;
p%=mod1;
}
}
p=1;
LL tp=0;
LL ans=0;
for(int i=0;i<n;++i){
a.insert((tp+p*res)%mod1);
if(s[i]=='+'){
tp+=p;
tp%=mod1;
}
if(s[i]=='-'){
tp+=mod1-p;
tp%=mod1;
}
if(s[i]=='<'){
p*=rev;
p%=mod1;
}
if(s[i]=='>'){
p*=mod2;
p%=mod1;
}
ans+=a.count(tp);
}
printf("%lld\n",ans);
close();
return 0;
}
Submission Info
Submission Time
2018-09-23 00:32:07+0900
Task
C - Minimization
User
Hercier
Language
C++14 (GCC 5.4.1)
Score
0
Code Size
1543 Byte
Status
WA
Exec Time
2103 ms
Memory
1408 KB
Compile Error
./Main.cpp: In function ‘void open()’:
./Main.cpp:26:29: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
freopen("99f.in","r",stdin);
^
./Main.cpp: In function ‘int main()’:
./Main.cpp:54:15: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",s);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
0 / 300
Status
Set Name
Test Cases
Sample
sample1.txt, sample2.txt, sample3.txt
All
sample1.txt, sample2.txt, sample3.txt, 1.txt, 10.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name
Status
Exec Time
Memory
1.txt
TLE
2103 ms
1408 KB
10.txt
TLE
2103 ms
1408 KB
2.txt
TLE
2103 ms
1408 KB
3.txt
TLE
2103 ms
1408 KB
4.txt
TLE
2103 ms
1408 KB
5.txt
TLE
2103 ms
1408 KB
6.txt
TLE
2103 ms
1408 KB
7.txt
WA
170 ms
640 KB
8.txt
TLE
2103 ms
1408 KB
9.txt
WA
4 ms
256 KB
sample1.txt
WA
1 ms
256 KB
sample2.txt
WA
1 ms
256 KB
sample3.txt
WA
1 ms
256 KB