Passwords(Codeforces 721B)

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值