Submission #1246479

#TimeUsernameProblemLanguageResultExecution timeMemory
1246479nguyenhuythachJOIOJI (JOI14_joioji)C++20
95 / 100
35 ms11216 KiB
#include<bits/stdc++.h> #include<algorithm> #include<random> #include<chrono> #include<cstdlib> #include<ctime> #include<numeric> #include<vector> #include<stack> #include<map> #include<set> #include<queue> #include<iomanip> #define int long long #define ll long long #define L LLONG_MAX #define fi first #define se second #define pii pair<int,int> #define pll pair<long long,long long> #define sz(a) ((int)a.size()) #define FOR(i,j,k) for(int i=j;i<=k;i++) #define REP(i,k,j) for(int i=k;i>=j;i--) #define FORD(i,a) for(auto i:a) #define MASK(i) ((1)<<(i)) #define rngdcl mt19937_64 rng(chrono::steady_clock::now().time_asince_epoch().count()) #define random(l,r) ((l)+(rng()%(r-l+1))) using namespace std; const int nmax=2e5+1; int n; string s; int J[nmax],O[nmax],I[nmax]; map<pair<pair<int,int>,int>,int> m; void input() { cin >> n >> s; int ans=0; FOR(i,0,sz(s)-1) { if(i!=0) { J[i]+=J[i-1]; O[i]+=O[i-1]; I[i]+=I[i-1]; } if(s[i]=='J') J[i]++; if(s[i]=='O') O[i]++; if(s[i]=='I') I[i]++; int mn=min({J[i],O[i],I[i]}); if(m.count({{J[i]-mn,O[i]-mn},I[i]-mn})) ans=max(ans,mn-m[{{J[i]-mn,O[i]-mn},I[i]-mn}]); else m[{{J[i]-mn,O[i]-mn},I[i]-mn}]=mn; } if(m.count({{0,0},0})) ans=max(ans,m[{{0,0},0}]); cout << ans*3; } signed main() { //freopen(".inp", "r", stdin); //freopen(".out", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...