Submission #774982

#TimeUsernameProblemLanguageResultExecution timeMemory
774982hgmhcHomework (CEOI22_homework)C++17
100 / 100
100 ms116032 KiB
#include <bits/stdc++.h> #define rep(i,a,b) for (auto i = (a); i <= (b); ++i) #define dbg(...) fprintf(stderr,__VA_ARGS__) using namespace std; using ii = pair<int,int>; using ll = long long; #define siz(x) int((x).size()) #define all(x) begin(x),end(x) #define mp make_pair const int N = 7e6+3; int n, m; char s[N]; int match[N]; int a, b, c; void dfs(int x, int y) { if (y-x == 0) { a=1,b=1,c=1; return; } int x1, y1, x2, y2, z1, z2, p=-1; if (s[x+4] == '?') p = x+4; else p = match[x+7]; dfs(x+4,p), x1=a,y1=b,z1=c; dfs(p+2,y-1), x2=a,y2=b,z2=c; if (s[x+1] == 'i') { a=min(x1,x2),b=y1+y2-1,c=z1+z2; return; } a=x1+x2,b=z1+z2-min(z1-y1,z2-y2),c=z1+z2; } int main() { scanf("%s", s+1); m = strlen(s+1); n = count(s+1,s+m+1,'?'); stack<int> st; rep(i,1,m) { if (s[i] == '(') st.push(i); if (s[i] == ')') match[st.top()] = i, st.pop(); } dfs(1,m); printf("%d", b-a+1); }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     scanf("%s", s+1);
      |     ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...