The Preliminary Contest for ICPC Asia Xuzhou 2019【计蒜客E】

题意:
给出一个m,和n个人的权值,每个人的权值加上m之后,从最后往前找到第一个比这个数大的位置,输出这两个位置之间相差了几个人
思路:对于i 代码:

#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define memset(a,b) memset(a,b,sizeof(a))
#define ll long long
#define inf 0x3f3f3f3f
#define mod 1000000007
const int maxn=5e5+10;
int a[maxn];               //原数组
int ans[maxn];           //存储的当前这个人对应的那个人的值
mapmp;        //存储对应的值的那个人的位置是哪里
int num[maxn];          //存储倒着遍历时序列中的最大值
int cnt=0;
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    num[cnt++]=a[n];
    ans[n]=a[n];
    mp[a[n]]=n;
    int maxx=a[n];
    for(int i=n-1;i>=1;i--){
        int flag=0;
        if(a[i] <= maxx){
            for(int j=0;j

你可能感兴趣的:(ACM)