Sample Input
Input
5 2
cba
abc
bb1
abC
ABC
abc
Output
1 15
Input
4 100
11
22
1
2
22
Output
3 4
题意:n,k,先给出n个需要试的密码,然后给出正确的密码,需要根据密码的长度从小到大来试,每试k次需要等待5秒在试,问最快和最慢各需要多长时间将密码试出来。不会重复试同一个密码。
思路:将所有要试的密码放到set里面去重,同时需要记录下来比正确密码长度小的个数sum1,和长度等于正确密码的个数sum2,最快和最慢就是在等于正确密码长度起始位置和末尾位置。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <sstream>
#include <cstdio>
#include <vector>
#include <string>
#include <cmath>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#define MAX 0x3f3f3f3f
using namespace std;
typedef long long ll;
const double PI = acos(-1);
const int M=3e3+10;
#define inf 0x3f3f3f
vector <int> v[M];
queue <int> dq;
set <string> s;
int main()
{
int n,k,i,ans1=0,ans2=0,sum1=0,sum2=0;
string ans,t;
cin>>n>>k;
s.clear();
for(i=0;i<n;i++)
{
cin>>t;
s.insert(t);
}
cin>>ans;
set<string> ::iterator it;
for(it=s.begin();it!=s.end();it++)
{
string h=*it;
if(h.size()<ans.size())
sum1++;
if(h.size()==ans.size())
sum2++;
}
ans1=sum1+sum1/k*5+1;
ans2=(sum2+sum1-1)/k*5+sum1+sum2;
cout<<ans1<<" "<<ans2<<endl;
return 0;
}