Submission #754008

#TimeUsernameProblemLanguageResultExecution timeMemory
754008vjudge1JJOOII 2 (JOI20_ho_t2)C++17
100 / 100
19 ms5684 KiB
/** * Author: Amirrrr * Created: 06.06.2023 * Why am I so stupid? :c * Slishkom slab **/ #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define all(x) x.begin(), x.end() #define FF first #define SS second #define ent "\n" #define int long long const int N = 1e6 + 13; const int MOD = 1e9 + 7; const int INF = 1e18; int n,k,pref[N],pref1[N],pref2[N]; string s; void gogo (){ cin>>n>>k; cin>>s; s='+'+s; int mn = INF; for (int i = 1 ; i <= n ; i ++){ if (s[i] =='J')pref[i]++; if(s[i]=='O')pref1[i]++; if(s[i]=='I')pref2[i]++; pref[i]+=pref[i-1],pref1[i]+=pref1[i-1],pref2[i]+=pref2[i-1]; } for(int i = 1 ; i <= n ; i ++){ if(s[i]!='J') continue; int l=i,r=n,ans=-1,ans1=-1,ans2=-1; while(l<=r){ int mid=(l+r)>>1; if(pref[mid] - pref[i-1]==k){ ans=mid; r=mid-1; } else if (pref[mid] - pref[i-1] > k){ r = mid-1; } else l = mid + 1; } l=ans+1,r=n; while(l<=r){ int mid=(l+r)>>1; if(pref1[mid] - pref1[ans]==k){ ans1=mid; r=mid-1; } else if (pref1[mid] - pref1[ans] > k){ r = mid-1; } else l = mid + 1; } l=ans1+1,r=n; while(l<=r){ int mid=(l+r)>>1; if(pref2[mid]-pref2[ans1]==k){ ans2=mid; r=mid-1; } else if (pref2[mid]-pref2[ans1]>k){ r=mid-1; } else l=mid + 1; } if(ans2==-1 || ans==-1 || ans1==-1){ continue; } mn = min(mn, ans2 - i + 1 - 3 * k); } if(mn!=INF)cout<< mn; else cout<<-1; } signed main (/*Amir Mirmanov*/){ ios_base::sync_with_stdio(0), cin.tie(0); int Q = 1,test = 1; //freopen("herding.in","r",stdin); //freopen("herding.out","w",stdout); //cin >> Q; while (Q --){ gogo (); } return 0; }

Compilation message (stderr)

ho_t2.cpp: In function 'int main()':
ho_t2.cpp:86:15: warning: unused variable 'test' [-Wunused-variable]
   86 |     int Q = 1,test = 1;
      |               ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...