极限卡常+o2还是有两个点TLE
查看原帖
极限卡常+o2还是有两个点TLE
298692
Rn_Lamsuly楼主2020/5/24 20:28
#include<bits/stdc++.h>
using namespace std;

inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}
int main()
{
	int n;
	int a=-1,b=-1,c=-1;
	n=read();
    if(n==0){
        cout<<0<<' '<<0<<' '<<0;
        return 0;
    }
    if(n<3){
        cout<<-1;
        return 0;
    }
    if(n%14==0){
        cout<<n/14<<' '<<n/14<<' '<<n/14;
        return 0;
    }
	for(register int i=0;i*7<=n;i++)
	{
		for(register int j=0;j<=(n-7*i)/4;j++)
		{
			for(register int k=0;k<=(n-((n-7*i)/4))/3;k++)
			{
				if(7*i+j*4+3*k!=n)continue;
				if(min(i,min(j,k))>min(a,min(b,c)))
				{
					a=i;
					b=j;
					c=k;
				}
				if(i+j+k>a+b+c&&min(i,min(j,k))==min(a,min(b,c)))
				{
					a=i;
					b=j;
					c=k;
				}
			}
		}
	}
	if(a==-1&&b==-1&&c==-1)cout<<-1;
	else cout<<a<<' '<<b<<' '<<c;
	return 0;
}
2020/5/24 20:28
加载中...