1490A
#include<stdio.h>
#include<string.h>
using namespace std;
float max(int a,int b)
{
if(a>b)
return a;
return b;
}
float min(int a,int b)
{
if(a<b)
return a;
return b;
}
int main()
{
int t,n,k,num[1000];
scanf("%d",&t);
while(t--)
{
memset(num,0,sizeof(num));
scanf("%d",&n);
k=n;
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
for(int i=0;i<n-1;i++)
{
float x,y;
x=max(num[i],num[i+1]);
y=min(num[i],num[i+1]);
if((x/y)>2)
{
for(int j=n-1;j>i;j--)
{
num[j+1]=num[j];
}
num[i+1]=min(num[i],num[i+1])*2;
n++;
i--;
}
}
printf("%d\n",n-k);
}
return 0;
}
1490B
#include<stdio.h>
#include<string.h>
using namespace std;
int max(int a,int b,int c)
{
int max=a;
if(max<b)
max=b;
if(max<c)
max=c;
return max;
}
int main()
{
int t,n,k,cnt,ans0,ans1,ans2,num[50000];
int c0,c1,c2,a0[50000],a1[50000],a2[50000];
scanf("%d",&t);
while(t--)
{
c0=c1=c2=cnt=0;
ans0=ans1=ans2=0;
memset(a0,-1,sizeof(a0));
memset(a1,-1,sizeof(a1));
memset(a2,-1,sizeof(a2));
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
if(num[i]%3==0)
{
c0++;
a0[ans0++]=i;
}
if(num[i]%3==1)
{
c1++;
a1[ans1++]=i;
}
if(num[i]%3==2)
{
c2++;
a2[ans2++]=i;
}
}
while(!(c0==c1&&c0==c2&&c1==c2))
{
k=max(c0,c1,c2);
if(k==c0)
{
num[a0[ans0-1]]++;
a1[ans1++]=num[a0[ans0-1]];
a0[ans0-1]=-1;
c0--,c1++,ans0--,cnt++;
}
if(k==c1)
{
num[a1[ans1-1]]++;
a2[ans2++]=num[a1[ans1-1]];
a1[ans1-1]=-1;
c1--,c2++,ans1--,cnt++;
}
if(k==c2)
{
num[a2[ans2-1]]++;
a0[ans0++]=num[a2[ans2-1]];
a2[ans2-1]=-1;
c2--,c0++,ans2--,cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
}
**
1490C
**
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
typedef long long LL;
int main()
{
LL x,ans,mid;
int t,flag;
scanf("%d",&t);
while(t--)
{
flag=0;
scanf("%lld",&x);
for(LL i=1;i<=10000;i++)
{
if(pow(i,3)>=x)
break;
ans=x-pow(i,3);
LL j=1,m=10000;
while(j<m)
{
mid=(j+m)>>1;
if(pow(mid,3)>=ans)
m=mid;
else
j=mid+1;
}
if(pow(j,3)==ans)
{
flag=1;
break;
}
}
if(flag == 1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}