Submission #219574

#TimeUsernameProblemLanguageResultExecution timeMemory
219574MKopchevJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
25 ms1908 KiB
#include<bits/stdc++.h>
using namespace std;

const int nmax=2e5+42;
int n,k;

vector<int> seen[3];

int ask(int pos,int where)
{
    if(where==3)return pos;
    pos++;
    int nxt_seen=lower_bound(seen[where].begin(),seen[where].end(),pos)-seen[where].begin();

    if(nxt_seen+k-1<seen[where].size())return ask(seen[where][nxt_seen+k-1],where+1);
    return 1e9;
}
int main()
{
    scanf("%i%i",&n,&k);

    for(int i=1;i<=n;i++)
    {
        char c=getchar();
        while(c!='J'&&c!='O'&&c!='I')c=getchar();

        if(c=='J')seen[0].push_back(i);
        else if(c=='O')seen[1].push_back(i);
        else seen[2].push_back(i);
    }

    int output=n+1;
    for(auto start:seen[0])
        output=min(output,ask(start-1,0)-start+1-3*k);

    if(output>n)printf("-1\n");
    else printf("%i\n",output);
    return 0;
}

Compilation message (stderr)

ho_t2.cpp: In function 'int ask(int, int)':
ho_t2.cpp:15:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(nxt_seen+k-1<seen[where].size())return ask(seen[where][nxt_seen+k-1],where+1);
        ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
ho_t2.cpp: In function 'int main()':
ho_t2.cpp:20:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i%i",&n,&k);
     ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...