Submission #1185870

#TimeUsernameProblemLanguageResultExecution timeMemory
1185870enzyMiners (IOI07_miners)C++20
84 / 100
1597 ms101132 KiB
#include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; const int inf=1e9+7; int v[maxn], dp[maxn][4][4][4][4]; // quais eram os ultimos dois ativos de cada mina int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; for(int i=1;i<=n;i++){ char c; cin >> c; if(c=='M') v[i]=1; if(c=='B') v[i]=2; if(c=='F') v[i]=3; } for(int i=0;i<=n;i++) for(int i1=0;i1<=3;i1++) for(int i2=0;i2<=3;i2++) for(int j1=0;j1<=3;j1++) for(int j2=0;j2<=3;j2++) dp[i][i1][i2][j1][j2]=-inf; dp[0][0][0][0][0]=0; int resp=0; for(int i=1;i<=n;i++) for(int i1=0;i1<=3;i1++) for(int i2=0;i2<=3;i2++) for(int j1=0;j1<=3;j1++) for(int j2=0;j2<=3;j2++){ set<int>s1, s2; s1.insert(i1); s1.insert(i2); s1.insert(v[i]); if(s1.count(0)) s1.erase(0); s2.insert(j1); s2.insert(j2); s2.insert(v[i]); if(s2.count(0)) s2.erase(0); int t1=s1.size(), t2=s2.size(); dp[i][i2][v[i]][j1][j2]=max(dp[i-1][i1][i2][j1][j2]+t1,dp[i][i2][v[i]][j1][j2]); dp[i][i1][i2][j2][v[i]]=max(dp[i-1][i1][i2][j1][j2]+t2,dp[i][i1][i2][j2][v[i]]); //cout << i << " " << i2 << " " << v[i] << " " << j1 << " " << j2 << " " << dp[i][i2][v[i]][j1][j2] << endl; //cout << i << " " << i1 << " " << i2 << " " << j2 << " " << v[i] << " " << dp[i][i1][i2][j2][v[i]] << endl; resp=max({resp,dp[i][i2][v[i]][j1][j2],dp[i][i1][i2][j2][v[i]]}); } cout << resp << endl; return 0; }
#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...
#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...