7 条题解

  • -2
    @ 2022-7-17 16:24:28
    using namespace std;
    const int N=10000;
    int n[N],m[N];
    string s[N];
    int main()
    {
    	int a,b,sum=1,num=1,h=0;
    	string p,o;
    	cin>>a>>b;
    	for(int i=0;i<a;i++)
    		cin>>s[i]>>n[i];
    	for(int i=1;i<a;i++)
    	{
    		for(int u=a-1;u>0;u--)
    		{
    			if(n[u]>n[u-1])
    			{
    				swap(n[u],n[u-1]);
    				swap(s[u],s[u-1]);
    			}
    		}
    	}
    	for(int i=0;i<a;i++)
    	{
    		if(n[i]!=n[i+1])
    		{
    			m[i]=sum;
    			if(sum<=b)
    			h++;
    			sum++;
    			num++;
    			if(sum<num)
    			sum=num;
    		}
    		else if(n[i]==n[i+1])
    		{
    			m[i]=sum;
    			num++;
    			if(sum<=b)
    			h++;
    		}
    	}
    	for(int u=1;u<=100;u++)
    	{
    	    for(int i=0;i<a;i++)
    	  {
    		if(m[i]==m[i+1])
    		{
    		    o=s[i];
    		    p=s[i+1];
    		    int len1=o.length(),len2=p.length();
    		    for(int k=0;k<len1-1;k++)
    		    {
    		    	int g=o[k],x=p[k];
    	           if(g<x)
    			   break;
    			   else if(g>x) 
    			   {
    			   	swap(s[i],s[i+1]);
    			   	break;
    			   }
    			}
    		}
      	  }
    }
        for(int i=0;i<a;i++)
        {
        	cout<<m[i]<<":"<<s[i]<<endl;
    	}
    	cout<<h;
    	return 0;
    }
    

    信息

    ID
    736
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    603
    已通过
    177
    上传者