# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
467642 | 2021-08-23T23:35:12 Z | urosk | Exam (eJOI20_exam) | C++14 | 214 ms | 197444 KB |
// __builtin_popcount(x) broj bitova // __builtin_popcountll(x) long long #define here cerr<<"---------------------------\n" #include <bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> #define ld double #define ll long long #define ull unsigned long long #define llinf 100000000000000000LL // 10^17 #define iinf 2000000000 // 2*10^9 #define pb push_back #define popb pop_back #define fi first #define sc second #define endl '\n' #define pii pair<int,int> #define pll pair<ll,ll> #define pld pair<ld,ld> #define sz(a) int(a.size()) #define all(a) a.begin(),a.end() #define rall(a) a.begin(),a.end(),greater<int>() #define getunique(v) {sort(all(v)); v.erase(unique(all(v)), v.end());} using namespace std; using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; void setIO(string inoutname) { freopen((inoutname+".in").c_str(),"r",stdin); freopen((inoutname+".out").c_str(),"w",stdout); } ll gcd(ll a, ll b) { if(b==0) return a; if(a==0) return b; if(a>=b) return gcd(a%b,b); return gcd(a,b%a); } #define maxn 100005 #define maxn2 5005 #define logn 30 ll n; ll a[maxn]; ll b[maxn]; ll dp[maxn2][maxn2]; ll st[maxn2][logn]; ll get(ll l,ll r){ ll len = r-l+1; ll k = 0; while((1<<(k+1))<=len){ k++; } return max(st[l][k],st[r-(1<<k)+1][k]); } void tc(){ ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0); cin >> n; for(ll i = 1;i<=n;i++) cin >> a[i]; bool s2 = 1; for(ll i = 1;i<=n;i++){ cin >> b[i]; if(i>1&&b[i]!=b[i-1]) s2 = 0; } if(s2){ ll cnt = 0; bool e = 0; ll ans = 0; for(ll i = 1;i<=n;i++){ if(a[i]>b[1]){ if(e) ans+=cnt; cnt = 0; e = 0; }else{ cnt++; if(a[i]==b[1]) e = 1; } } if(e) ans+=cnt; cout<<ans<<endl; return; } for(ll i = 1;i<=n;i++) st[i][0] = a[i]; for(ll j = 1;j<logn;j++){ for(ll i = 1;i+(1<<(j-1))<=n;i++){ st[i][j] = max(st[i][j-1],st[i+(1<<(j-1))][j-1]); } } for(ll i = 1;i<=n;i++){ for(ll j = 1;j<=n;j++){ if(a[i]==b[j]){ ll mx = get(min(i,j),max(i,j)); dp[i][j] = dp[i-1][j-1] + 1; }else{ dp[i][j] = max(dp[i-1][j],dp[i][j-1]); dp[i][j] = max(dp[i][j],dp[i-1][j-1]); } } } cout<<dp[n][n]<<endl; } int main(){ ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0); //setIO("lol"); int t; t = 1; while(t--){ tc(); } return 0; } /* 4 10 1 9 2 10 9 10 9 2 out: 2 -- 3 10 1 1 1 1 1 */
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 0 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 0 ms | 332 KB | Output is correct |
5 | Correct | 0 ms | 332 KB | Output is correct |
6 | Correct | 0 ms | 332 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 332 KB | Output is correct |
2 | Correct | 7 ms | 620 KB | Output is correct |
3 | Correct | 18 ms | 1664 KB | Output is correct |
4 | Correct | 16 ms | 1816 KB | Output is correct |
5 | Correct | 29 ms | 1868 KB | Output is correct |
6 | Correct | 16 ms | 1804 KB | Output is correct |
7 | Correct | 16 ms | 1860 KB | Output is correct |
8 | Correct | 25 ms | 1776 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 332 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 214 ms | 197444 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 0 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 0 ms | 332 KB | Output is correct |
5 | Correct | 0 ms | 332 KB | Output is correct |
6 | Correct | 0 ms | 332 KB | Output is correct |
7 | Incorrect | 0 ms | 332 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 0 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 0 ms | 332 KB | Output is correct |
5 | Correct | 0 ms | 332 KB | Output is correct |
6 | Correct | 0 ms | 332 KB | Output is correct |
7 | Incorrect | 0 ms | 332 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |