#include<cassert>
#include<cstdio>
int min(int a,int b)
{
return(a>b)?b:a;
}
int max(int a,int b)
{
return(a>b)?a:b;
}
int query_kth(int n_a,int n_b,int n_c,int k)
{
int a=0,b=0,c=0;
int ra,rb,rc,ta,tb,tc;
int l,ans=0;
while(k>0)
{
l=k/3;if(k%3!=0)++l;
ta=a+l-1,tb=b+l-1,tc=c+l-1;
ta=min(n_a-1,ta),tb=min(n_b-1,tb),tc=min(n_c-1,tc);
ta=max(a,ta),tb=max(b,tb),tc=max(c,tc);
ra=get_a(ta),rb=get_b(tb),rc=get_c(tc);
if(ra<=rb&&rc>=ra){k-=(ta-a+1);a=min(ta+1,n_a);ans=max(ans,ra);continue;}
if(rb<=rc&&ra>=rb){k-=(tb-b+1);b=min(tb+1,n_b);ans=max(ans,rb);continue;}
if(rc<=ra&&rb>=rc){k-=(tc-c+1);c=min(tc+1,n_c);ans=max(ans,rc);continue;}
}
return ans;
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |