제출 #467099

#제출 시각아이디문제언어결과실행 시간메모리
467099mtxasExam (eJOI20_exam)C++14
25 / 100
221 ms392380 KiB
#include <bits/stdc++.h> #define ll long long #define vi vector<int> #define vll vector<ll> #define pb push_back #define mfsadfp make_pair #define pii pair<int, int> #define pll pair<ll, ll> #define fi first #define se second #define mii map<int, int> #define all(a) a.begin(), a.end() #define _fre() freopen("input.txt", "r", stdin) #define turbo() cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false) #define sz(x) ((int)x.size()) #define _for(a, b, c) for(int (a) = (b); (a) < (c); (a)++) #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++) #define _forneq(a, b, c) for(int (a) = (b); (a) >= (c); (a)--) #define _forn(a, b, c) for(int (a) = (b); (a) > (c); (a)--) #define MyMax(a, b) if(a < (b)) a = (b); using namespace std; #define int ll /*********************************************************************************** STRUCTS ************************************************************************************/ /*********************************************************************************** VARIABLES ************************************************************************************/ const int maxn = 1e5+2; int n; int a[maxn], b[maxn]; /*********************************************************************************** FUNCTIONS ************************************************************************************/ int pass(int l, int r){ int mx = 0; _foreq(i, l, r) mx = max(mx, a[i]); int ans = 0; _foreq(i, l, r) ans += (mx == b[i]); return ans; } bool subtask2(){ bool yes = 1; _foreq(i, 2, n) yes &= (b[i] == b[i-1]); return yes; } bool subtask3(){ _foreq(i, 2, n) if(a[i-1] >= a[i]) return false; return true; } int solve2(){ int B = b[1]; a[n+1] = B+1; bool exists = 0; _foreq(i, 1, n) exists |= (a[i] == B); if(!exists){cout<<0; return 0;} int ans = 0; int start = 1; bool haveB = 0; _foreq(i, 1, n+1){ if(a[i] > B) { if(haveB) ans += i-start; haveB = 0; start = i+1; } else if(a[i] == B) haveB = 1; } return ans; } int solve3(){ vi best(n+1, 0); vector<vi> cnt(n+1, vi(n+1, 0)); vector<vi> dp(n+1, vi(n+1, 0)); // _foreq(i, 1, n) // _foreq(j, 1, n) // cnt[j][i] = cnt[j][i-1] + (b[i] == a[j]); // // _foreq(i, 1, n){ // _foreq(j, 1, n) // dp[i][j] = best[j] + cnt[j][i]; // // _foreq(j, 1, n){ // MyMax(best[j], best[j-1] + cnt[j-1][i] - cnt[j][i]); // MyMax(best[j], dp[i][j-1] - cnt[j][i]); // } // } _foreq(i, 1, n){ int mx = dp[i-1][i-1]; _foreq(j, i, n){ MyMax(mx, dp[i-1][j]); dp[i][j] = mx + (b[i] == a[j]); } } return dp[n][n]; } void readInput(){ cin>>n; _foreq(i, 1,n) cin>>a[i]; _foreq(i, 1, n) cin>>b[i]; } /*********************************************************************************** MAIN ************************************************************************************/ signed main(){ // _fre(); turbo(); readInput(); if(subtask2()) cout<<solve2(); else if(subtask3()) cout<<solve3(); }

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

exam.cpp: In function 'long long int pass(long long int, long long int)':
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:39:5: note: in expansion of macro '_foreq'
   39 |     _foreq(i, l, r) mx = max(mx, a[i]);
      |     ^~~~~~
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:41:5: note: in expansion of macro '_foreq'
   41 |     _foreq(i, l, r) ans += (mx == b[i]);
      |     ^~~~~~
exam.cpp: In function 'bool subtask2()':
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:46:5: note: in expansion of macro '_foreq'
   46 |     _foreq(i, 2, n) yes &= (b[i] == b[i-1]);
      |     ^~~~~~
exam.cpp: In function 'bool subtask3()':
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:50:5: note: in expansion of macro '_foreq'
   50 |     _foreq(i, 2, n)
      |     ^~~~~~
exam.cpp: In function 'long long int solve2()':
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:57:5: note: in expansion of macro '_foreq'
   57 |     _foreq(i, 1, n) exists |= (a[i] == B);
      |     ^~~~~~
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:61:5: note: in expansion of macro '_foreq'
   61 |     _foreq(i, 1, n+1){
      |     ^~~~~~
exam.cpp: In function 'long long int solve3()':
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:87:5: note: in expansion of macro '_foreq'
   87 |     _foreq(i, 1, n){
      |     ^~~~~~
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'j' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:89:9: note: in expansion of macro '_foreq'
   89 |         _foreq(j, i, n){
      |         ^~~~~~
exam.cpp: In function 'void readInput()':
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:97:13: note: in expansion of macro '_foreq'
   97 |     cin>>n; _foreq(i, 1,n) cin>>a[i]; _foreq(i, 1, n) cin>>b[i];
      |             ^~~~~~
exam.cpp:18:33: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define _foreq(a, b, c) for(int (a) = (b); (a) <= (c); (a)++)
      |                                 ^
exam.cpp:97:39: note: in expansion of macro '_foreq'
   97 |     cin>>n; _foreq(i, 1,n) cin>>a[i]; _foreq(i, 1, n) cin>>b[i];
      |                                       ^~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...