比赛地址:https://ac.nowcoder.com/acm/contest/11038#question

A:
用结构体存储每个点的xy坐标
因为所有点的xy坐标小于等于200,且答案坐标为整数,所以直接枚举答案的xy坐标,
利用两点间距离公式:
图片说明
即可
时间复杂度:O(40000n)

#include<bits/stdc++.h>
using namespace std;
struct abc
{
    int x,y;
};
int main()
{
    int n;
    cin>>n;
    abc a[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].x>>a[i].y;
    }
    for(int x=1;x<=200;x++)
    {
        for(int y=1;y<=200;y++)
        {
            int p=(x-a[1].x)*(x-a[1].x)+(y-a[1].y)*(y-a[1].y);
            int f=0;
            for(int i=2;i<=n;i++)
            {
                if(p!=(x-a[i].x)*(x-a[i].x)+(y-a[i].y)*(y-a[i].y))
                {
                    f=1;
                    break;
                }
            }
            if(f==0)
            {
                cout<<x<<" "<<y<<" "<<endl;
                return 0;
            }
        }
    }
    cout<<"War is cruel."<<endl;
    return 0;
}

B:
这道题的意思,相当与把每个国家的战力排序,如果下一个国家的编号小于当前国家编号,那么必须传多一轮,才能到达下一个国家,按照这样的思路,我们用一个结构体存储每个国家的编号和战力,利用STL中的sort进行排序,直接从前往后枚举即可。
时间复杂度:O(n log n)

#include<bits/stdc++.h>
using namespace std;
struct abc
{
    int x,id;
};
bool cmp(abc f1,abc f2)
{
    return f1.x>f2.x;
}
int main()
{
    int n;
    cin>>n;
    abc a[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].x;
        a[i].id=i;
    }
    sort(a+1,a+1+n,cmp);
    int ans=1;
    for(int i=2;i<=n;i++)
    {
        if(a[i].id<a[i-1].id)
        {
            ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}