Submission #515853

#TimeUsernameProblemLanguageResultExecution timeMemory
515853_Monkey_Financial Report (JOI21_financial)C++17
65 / 100
176 ms478280 KiB
// Song Đồng Gia Phúc /* * ʕ•ᴥ•ʔ * [Penguin_024] * U U */ #include<bits/stdc++.h> using namespace std; #define el '\n' #define ll long long #define ull unsigned long long #define vll vector<ll> #define double double #define fi first #define se second #define cico(A) freopen(A".INP","r",stdin); freopen(A".OUT","w",stdout); template<typename x,typename y> void amin(x &a,y b){if(b<a) a=b;} template<typename x,typename y> void amax(x &a,y b){if(b>a) a=b;} const int maxn=3e5+7,maxq=19*1e4+7; const string yes="YES\n",no="NO\n"; int n,d,a[maxn]; int ans,res,oo=1e9+7; /////// SUB 4 void sub4(){ vector<int> f; ans = 0; for(int i=n;i>0;--i){ while( !f.empty() && a[i]>=f.back() ) f.pop_back(); f.push_back(a[i]); amax( ans , f.size() ); } cout << ans; } /////// SUB 1 void quaylui(int id,int maxi,int sum,int kc){ if(kc>=d) return; if(id==n+1){ amax(ans,sum); return; } quaylui( id+1 , max(maxi,a[id]) , sum + (a[id]>maxi) , 0 ); quaylui( id+1 , maxi , sum , kc + (sum>0) ); } void sub1(){ ans = 0; quaylui(1,-1,0,0); cout << ans; } /////// SUB 5 void sub5(){ vector<int> f(1,-1); for(int i=1;i<=n;++i){ if( a[i]>f.back() ){ f.push_back(a[i]); } else { res = lower_bound( f.begin() , f.end() , a[i] ) - f.begin(); f[res] = a[i]; } } ans = f.size() - 1; cout << ans; } /////// SUB 2 void sub2(){ const int maxx=407; int dp[maxx][maxn]; for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j) dp[i][j] = oo; } for(int i=1;i<=n;++i){ dp[i][1] = a[i]; for(int j=i-1;j>0 && i-j<=d;j--){ for(int z=2;z<=i;z++){ if( a[i] > dp[j][z-1] ) amin( dp[i][z] ,a[i] ); amin( dp[i][z] , max(dp[j][z],a[i]) ); } } } for(int i=1;i<=n;++i) if(dp[n][i] < oo) ans=i; cout << ans; } /////// SUB 3 void sub3(){ const int maxx = 7e3+7; int dp[maxx],kc; ans = 0; for(int i=1;i<=n;++i){ dp[i] = 1; kc=0; for(int j=i-1;j>0 && kc<d;--j){ if( a[i] > a[j] ){ amax( dp[i] , dp[j] + 1 ); kc=0; } else kc++; } amax( ans , dp[i] ); } cout << ans; } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin >> n >> d; for(int i=1;i<=n;++i){ cin >> a[i]; } // sub 4 if(d==1){ sub4(); return 0; } // sub 1 if(n<=20){ sub1(); return 0; } // sub 5 if(d==n){ sub5(); return 0; } // sub 2 if(n<=400){ sub2(); return 0; } // sub 3 if(n<=7000){ sub3(); return 0; } return 0; }

Compilation message (stderr)

Main.cpp: In instantiation of 'void amax(x&, y) [with x = int; y = long unsigned int]':
Main.cpp:35:30:   required from here
Main.cpp:21:57: warning: comparison of integer expressions of different signedness: 'long unsigned int' and 'int' [-Wsign-compare]
   21 | template<typename x,typename y> void amax(x &a,y b){if(b>a) a=b;}
      |                                                        ~^~
#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...