Submission #707033

#TimeUsernameProblemLanguageResultExecution timeMemory
707033blacktulipGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++17
15 / 100
418 ms1002352 KiB
#include <bits/stdc++.h> using namespace std; typedef long long lo; typedef pair< lo,lo > PII; #define fi first #define se second #define mp make_pair #define endl "\n" #define pb push_back #define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define FOR for(int i=1;i<=n;i++) #define mid ((start+end)/2) #define ort ((bas+son)/2) const lo inf = 1000000000000000000; const lo KOK = 100000; const lo LOG = 30; const lo li = 400; const lo mod = 1000000007; int n,m,k,flag,t,x,siz1,siz2,siz3,dp[li][li][li][4]; int cev; string s; vector<int> v[3]; inline int in(){ int x; scanf("%d",&x); return x; } inline int f(int bir,int iki,int uc,int sira,int son){ int cevv=1000000000; if(bir==siz1 && iki==siz2 && uc==siz3)return 0; if(~dp[bir][iki][uc][son])return dp[bir][iki][uc][son]; if(bir!=siz1){ if(son!=0)cevv=min(cevv,f(bir+1,iki,uc,sira+1,0)+abs(v[0][bir]-sira)); } if(iki!=siz2){ if(son!=1)cevv=min(cevv,f(bir,iki+1,uc,sira+1,1)+abs(v[1][iki]-sira)); } if(uc!=siz3){ if(son!=2)cevv=min(cevv,f(bir,iki,uc+1,sira+1,2)+abs(v[2][uc]-sira)); } return dp[bir][iki][uc][son]=cevv; } int main(void){ fio(); cin>>n; cin>>s; memset(dp,-1,sizeof(dp)); for(int i=0;i<n;i++){ if(s[i]=='R'){s[i]='a';siz1++;} if(s[i]=='G'){s[i]='b';siz2++;} if(s[i]=='Y'){s[i]='c';siz3++;} v[s[i]-'a'].pb(i); } long long yaz=f(0,0,0,0,3); if(yaz>=1000000000)yaz=-2; cout<<yaz/2; 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...