제출 #62353

#제출 시각아이디문제언어결과실행 시간메모리
62353kingpig9괄호 문자열 (CEOI16_match)C++11
100 / 100
25 ms12732 KiB
//This is so hard to understand why it even works... #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 1e5 + 10; #define debug(...) fprintf(stderr, __VA_ARGS__) #define fi first #define se second #define all(v) (v).begin(), (v).end() #define fillchar(a, s) memset((a), (s), sizeof(a)) int N; char S[MAXN]; char ans[MAXN]; int prv[MAXN][26]; void rec (int lt, int rt) { if (lt > rt) { return; } int match = prv[rt][S[lt] - 'a']; //which index you match with? if (match <= lt) { //then cannot match puts("-1"); exit(0); } ans[lt] = '('; ans[match] = ')'; rec(lt + 1, match - 1); rec(match + 1, rt); } int main() { if (fopen("match.in", "r")) { freopen("match.in", "r", stdin); freopen("match.out", "w", stdout); } scanf("%s", S); N = strlen(S); for (int i = 0; i < N; i++) { for (int j = 0; j < 26; j++) { prv[i][j] = -1; if (j == S[i] - 'a') { prv[i][j] = i; } else if (i) { if (prv[i - 1][S[i] - 'a'] > 0) { prv[i][j] = prv[prv[i - 1][S[i] - 'a'] - 1][j]; } } } } rec(0, N - 1); puts(ans); }

컴파일 시 표준 에러 (stderr) 메시지

match.cpp: In function 'int main()':
match.cpp:41:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("match.in", "r", stdin);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
match.cpp:42:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("match.out", "w", stdout);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
match.cpp:44:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", S);
  ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...