B - All the Vowels Please(构造,循环)

给你一个数字 k ,要求存在 n * m = k,(行和列)
要求每行每列都有aeiou,输出最后长为k的字符串

重点在找到5*5循环节,然后循环构造

int main()
{
    int n;cin>>n;
    if(n<25) {cout<<"-1"<<endl;return 0;}
    int flag=0,i;
    for(i=5;i<=sqrt(n);++i) if(n%i==0) {flag=1;break;}
    int j=n/i;
    if(flag==0||j<5) {cout<<"-1"<<endl;return 0;}
    string ans[5]={"aeiou","eioua","iouae","ouaei","uaeio"};
    for(int x=0;x<i;++x)
    {
        int now=x%5;
        int bei=j/5;
        while(bei--) cout<<ans[now];
        int yu=j%5;
        rep(ii,yu) cout<<ans[now][ii];
    }
    //cout<<ans;
    //stop;
    return 0;
}

C. A Tale of Two Lands



就可以只考虑x,y均大于零就。。。行
ll x[N];
int main()
{
    int n;cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> x[i];
        if (x[i] < 0) x[i] *= -1;
    }
    sort(x, x + n);
    ll ans=0;
    rep(i,n)
    {
        int pos=upper_bound(x,x+n,2*x[i])-x;
		ans+=(pos-i-1);
    }
    cout << ans;
    //stop;
    return 0;
}