Submission #217371

#TimeUsernameProblemLanguageResultExecution timeMemory
217371kshitij_sodaniGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++17
0 / 100
412 ms755704 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; typedef long long int llo; #define mp make_pair #define pb push_back #define a first #define b second #define endl "\n" llo mod=1000000007; int n; int it[401]; int dp[401][401][401][3]; vector<int> aa; vector<int> bb; vector<int> cc; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; char ss; int co=0; int co2=0; for(int i=0;i<n;i++){ for(int j=0;j<=n;j++){ for(int k=0;k<=n;k++){ for(int l=0;l<3;l++){ dp[i][j][k][l]=400000; } } } } int pre[n][3]; for(int i=0;i<n;i++){ if(i==0){ pre[i][0]=0; pre[i][1]=0; pre[i][2]=0; } else{ pre[i][0]=pre[i-1][0]; pre[i][1]=pre[i-1][1]; pre[i][2]=pre[i-1][2]; } cin>>ss; if(ss=='R'){ co+=1; aa.pb(i); pre[i][0]+=1; } else if(ss=='G'){ it[i]=1; co2+=1; pre[i][1]+=1; bb.pb(i); } else{ pre[i][2]+=1; cc.pb(i); } } if(co>(n+1)/2 or co2>(n+1)/2 or (n-co-co2)>(n+1)/2){ cout<<-1<<endl; return 0; } for(int i=0;i<n;i++){ for(int j=0;j<=min((int)aa.size(),i+1);j++){ for(int k=0;k<=min((int)aa.size(),i+1-j);k++){ if((i+1)-j-k>(i+2)/2 or j>(i+2)/2 or k>(i+2)/2 or j+k>i+1 or j>aa.size() or k>bb.size() or i+1-j-k>cc.size()){ continue; } // cout<<i+1<<" "<<j<<" "<<k<<endl; if(j>0){ int co=0; if(k>0){ co+=max(pre[bb[k-1]][1]-pre[aa[j-1]][1],0); } if(i+1-j-k>0){ co+=max(pre[cc[i-j-k]][2]-pre[aa[j-1]][2],0); } if(i>0){ dp[i][j][k][0]=co+min(dp[i-1][j-1][k][1],dp[i-1][j-1][k][2]); } else{ dp[i][j][k][0]=co; } } if(k>0){ int co=0; if(j>0){ co+=max(pre[aa[j-1]][0]-pre[bb[k-1]][0],0); } if(i+1-j-k>0){ co+=max(pre[cc[i-j-k]][2]-pre[bb[k-1]][2],0); } if(i>0){ dp[i][j][k][1]=co+min(dp[i-1][j][k-1][0],dp[i-1][j][k-1][2]); } else{ dp[i][j][k][1]=co; } } if(j+k<i+1){ int co=0; if(k>0){ co+=max(pre[bb[k-1]][1]-pre[cc[i-j-k]][1],0); } if(j>0){ co+=max(pre[aa[j-1]][0]-pre[cc[i-j-k]][0],0); } if(i>0){ dp[i][j][k][2]=co+min(dp[i-1][j][k][0],dp[i-1][j][k][1]); } else{ dp[i][j][k][2]=co; } } } } } int mi=400000; for(int j=0;j<=3;j++){ mi=min(mi,dp[n-1][aa.size()][bb.size()][j]); } cout<<mi<<endl; return 0; }

Compilation message (stderr)

joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:68:67: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if((i+1)-j-k>(i+2)/2 or j>(i+2)/2 or k>(i+2)/2 or j+k>i+1 or j>aa.size() or k>bb.size() or i+1-j-k>cc.size()){
                                                                  ~^~~~~~~~~~
joi2019_ho_t3.cpp:68:82: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if((i+1)-j-k>(i+2)/2 or j>(i+2)/2 or k>(i+2)/2 or j+k>i+1 or j>aa.size() or k>bb.size() or i+1-j-k>cc.size()){
                                                                                 ~^~~~~~~~~~
joi2019_ho_t3.cpp:68:103: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if((i+1)-j-k>(i+2)/2 or j>(i+2)/2 or k>(i+2)/2 or j+k>i+1 or j>aa.size() or k>bb.size() or i+1-j-k>cc.size()){
                                                                                                ~~~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...