Submission #63783256
Source Code Expand
/*
Author: rnishiura
Date: 25-03-08
Description: template
*/
// #define ATCODER_
#include <bits/stdc++.h>
#ifdef ATCODER_
#include <atcoder/all>
#endif
#define _GLIBCXX_DEBUG
#define rep(x, n) for(ll x=0; x<n; x++)
#define repi(x, a, b) for(ll x=a; x<b; x++)
#define rrep(x, n) for(ll x=n-1; x>=0; x--)
#define rrepi(x, a, b) for(ll x=b-1; x>=a; x--)
#define SQ(z) ((z)*(z))
#define contains(x, a) ((a).find(x) != (a).end())
#define all(a) (a).begin(), (a).end()
#define sum(a) (accumulate(all(a), 0LL))
#define mini(a) (min_element(all(a)) - (a).begin())
#define maxi(a) (max_element(all(a)) - (a).begin())
#define mine(a) (*min_element(all(a)))
#define maxe(a) (*max_element(all(a)))
#define lowb(x, a) (lower_bound(all(a), (x)) - (a).begin())
#define uppb(x, a) (upper_bound(all(a), (x)) - (a).begin())
#define divl(n, m) ((n+m)/(m))
#define divle(n, m) ((n+m-1)/(m))
#define divse(n, m) ((n)/(m))
#define divs(n, m) ((n-1)/(m))
#define bstoi(s) stoi((s), nullptr, 2)
#define MOD 998244353
#define PI 3.14159265358979323846
#define inf (1LL << 61)
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define POS fi
#define COST se
#define endl '\n'
#define unordered_multiset multiset
#define TRUE 1
#define FALSE 0
#define VNAME(v) #v
#define GET_MACRO(_1,_2,_3, NAME,...) NAME
#define print(...) GET_MACRO(__VA_ARGS__, print3, print2, print1)(__VA_ARGS__)
#define debug(...) GET_MACRO(__VA_ARGS__, debug3, debug2, debug1)(__VA_ARGS__)
#define print1(z) { cout << (z) << endl; }
#define print2(y, z) { cout << (y) << ' '; print1(z); }
#define print3(x, y, z) { cout << (x) << ' '; print2(y, z); }
#define debug1(z) { if(DEBUG) { print(VNAME(z)); print(z); } }
#define debug2(y, z) { if(DEBUG) { print(VNAME(y), VNAME(z)); print(y, z); } }
#define debug3(x, y, z) { if(DEBUG) { print(VNAME(x), VNAME(y), VNAME(z)); print(x, y, z); } }
#ifdef ATCODER_
using namespace atcoder;
using mint = modint998244353;
#endif
using namespace std;
using ll = long long;
using v = vector<ll>;
using vv = vector<v>;
using vp = vector<pair<ll, ll>>;
using vvp = vector<vp>;
ll modinv(ll x) {
ll r=1, m=MOD-2;
x %= MOD;
while(m) {
if(m%2) r = r*x%MOD;
x = x*x%MOD;
m >>= 1;
}
return r;
}
struct mint {
unsigned long long val;
mint operator+(mint b) {
return mint{(this->val+b.val)%MOD};
}
mint operator-(mint b) {
return mint{(MOD+this->val-b.val)%MOD};
}
mint operator*(mint b) {
return mint{this->val*b.val%MOD};
}
mint operator/(mint b) {
return mint{this->val*modinv(b.val)%MOD};
}
void operator+=(mint b) { *this=*this+b; }
void operator-=(mint b) { *this=*this-b; }
void operator*=(mint b) { *this=*this*b; }
void operator/=(mint b) { *this=*this/b; }
};
template<typename T, typename U> istream& operator>>(istream& is, pair<T, U> &p){is >> p.first >> p.second; return is;}
template<typename T, typename U> ostream& operator<<(ostream& os, pair<T, U> p){os << p.first << ' ' << p.second; return os;}
template<typename T> vector<T>& operator-- (vector<T> &v){for (auto& i : v) --i; return v;}
template<typename T> vector<T>& operator++ (vector<T> &v){for (auto& i : v) ++i; return v;}
template<typename T> istream& operator>>(istream& is, vector<T> &v){for (auto& i : v) is >> i; return is;}
// template<typename T> ostream& operator<<(ostream& os, vector<bool> v){for (auto i : v) os << (i ? 'T' : 'F') << ' '; return os;}
template<typename T> ostream& operator<<(ostream& os, vector<T> v){for (auto i : v) os << i << ' '; return os;}
template<typename T> ostream& operator<<(ostream& os, vector<vector<T>> v){for (auto& i : v) os << i << endl; return os;}
template<typename T, typename U> pair<T,U>& operator-- (pair<T, U> &p){--p.first; --p.second; return p;}
template<typename T, typename U> pair<T,U>& operator++ (pair<T, U> &p){++p.first; ++p.second; return p;}
template<typename T, typename U> pair<T,U> operator-(pair<T,U> a, pair<T,U> b){return mp(a.first-b.first, a.second-b.second);}
template<typename T, typename U> pair<T,U> operator+(pair<T,U> a, pair<T,U> b){return mp(a.first+b.first, a.second+b.second);}
template<typename T, typename U> pair<T,T> operator*(pair<T,T> a, U b){return mp(a.first*b , a.second*b);}
template<typename T, typename U> pair<T,T> operator/(pair<T,T> a, U b){return mp(a.first/b , a.second/b);}
template<typename T, typename U> pair<T,T> operator%(pair<T,T> a, U b){return mp(a.first%b , a.second%b);}
template<typename T, typename U> void umin(T& a, U b){if (a > b) a = b;}
template<typename T, typename U> void umax(T& a, U b){if (a < b) a = b;}
const string DEBUG_MESSAGE = "DEBUG MODE IS ON";
// const int DEBUG = TRUE;
const int DEBUG = FALSE;
void solve() {
ll n; cin >> n;
v a(n); cin >> a;
map<ll, ll> L, R;
ll lc=1, rc=0;
L[a[0]] = 1;
repi(i, 1, n) {
R[a[i]]++;
if(R[a[i]] == 1) rc++;
}
ll ans = lc+rc;
repi(i, 1, n-1) {
L[a[i]]++;
if(L[a[i]] == 1) lc++;
R[a[i]]--;
if(R[a[i]] == 0) rc--;
umax(ans, lc+rc);
}
print(ans);
}
int main(void) {
debug(DEBUG_MESSAGE);
cin.tie(nullptr); ios::sync_with_stdio(false);
ll t = 1; // cin >> t;
rep(i, t) solve();
debug(DEBUG_MESSAGE);
}
Submission Info
| Submission Time |
|
| Task |
C - Variety Split Easy |
| User |
rnishiura |
| Language |
C++ 23 (gcc 12.2) |
| Score |
350 |
| Code Size |
5631 Byte |
| Status |
AC |
| Exec Time |
540 ms |
| Memory |
43056 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
350 / 350 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3504 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3572 KiB |
| 01_test_00.txt |
AC |
1 ms |
3636 KiB |
| 01_test_01.txt |
AC |
1 ms |
3584 KiB |
| 01_test_02.txt |
AC |
1 ms |
3512 KiB |
| 01_test_03.txt |
AC |
1 ms |
3432 KiB |
| 01_test_04.txt |
AC |
1 ms |
3644 KiB |
| 01_test_05.txt |
AC |
74 ms |
10212 KiB |
| 01_test_06.txt |
AC |
401 ms |
29232 KiB |
| 01_test_07.txt |
AC |
108 ms |
12268 KiB |
| 01_test_08.txt |
AC |
439 ms |
29080 KiB |
| 01_test_09.txt |
AC |
376 ms |
26396 KiB |
| 01_test_10.txt |
AC |
412 ms |
29156 KiB |
| 01_test_11.txt |
AC |
74 ms |
9968 KiB |
| 01_test_12.txt |
AC |
444 ms |
29324 KiB |
| 01_test_13.txt |
AC |
38 ms |
7312 KiB |
| 01_test_14.txt |
AC |
445 ms |
29244 KiB |
| 01_test_15.txt |
AC |
256 ms |
11884 KiB |
| 01_test_16.txt |
AC |
309 ms |
17308 KiB |
| 01_test_17.txt |
AC |
368 ms |
21576 KiB |
| 01_test_18.txt |
AC |
391 ms |
24996 KiB |
| 01_test_19.txt |
AC |
421 ms |
27308 KiB |
| 01_test_20.txt |
AC |
12 ms |
5448 KiB |
| 01_test_21.txt |
AC |
16 ms |
5492 KiB |
| 01_test_22.txt |
AC |
17 ms |
5412 KiB |
| 01_test_23.txt |
AC |
17 ms |
5396 KiB |
| 01_test_24.txt |
AC |
17 ms |
5392 KiB |
| 01_test_25.txt |
AC |
262 ms |
42868 KiB |
| 01_test_26.txt |
AC |
540 ms |
42808 KiB |
| 01_test_27.txt |
AC |
1 ms |
3632 KiB |
| 01_test_28.txt |
AC |
1 ms |
3436 KiB |
| 01_test_29.txt |
AC |
229 ms |
29304 KiB |
| 01_test_30.txt |
AC |
112 ms |
9656 KiB |
| 01_test_31.txt |
AC |
70 ms |
7148 KiB |
| 01_test_32.txt |
AC |
267 ms |
42880 KiB |
| 01_test_33.txt |
AC |
264 ms |
43056 KiB |
| 01_test_34.txt |
AC |
265 ms |
42924 KiB |
| 01_test_35.txt |
AC |
262 ms |
42896 KiB |