后面十个点WA 大佬帮忙看看 谢谢

P1908 逆序对

DOs__lx @ 2020-02-23 13:05:49

只有50分 QWQ

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define re register
const int M=5e5+5;
int a[M],r[M],n;
long long ans;
namespace fir{
    inline int read(){
        int s=0,w=1;
        char c=getchar();
        while(c>'9'||c<'0'){
            if(c=='-') w=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9'){
            s=(s<<3)+(s<<1)+(c^48);
            c=getchar();
        }
        return s*w;
    }
    inline void write(int a){
        int tot=abs(a);
        if(a<0) putchar('-');
        int cnt=0;
        char c[M];
        while(tot>0){
            c[cnt++]=tot%10+'0';
            tot/=10;
        }
        while(cnt>0) putchar(c[--cnt]);
    }
}
namespace solve{
    inline void msort(int s,int t){
        if(s==t) return;
        int mid=s+t>>1;
        msort(s,mid);
        msort(mid+1,t);
        int i=s;
        int j=mid+1;
        int k=s;
        while(i<=mid&&j<=t){
            if(a[i]<=a[j]){
                r[k]=a[i];
                k++;
                i++;
            }
            else{
                r[k]=a[j];
                k++;
                j++;
                ans+=(long long)mid-i+1;
            }
        }
        while(i<=mid){
            r[k]=a[i];
            k++;
            i++;
        }
        while(j<=t){
            r[k]=a[j];
            k++;
            j++;
        }
        for(int i=s;i<=t;++i) a[i]=r[i];
    }
}
int main(){
    n=fir::read();
    for(int i=1;i<=n;++i) a[i]=fir::read();
    solve::msort(1,n);
    fir::write(ans);
    return 0;
} 

by DOs__lx @ 2020-02-23 13:16:02

不行 还是错了一半 QWQ


by 神山识 @ 2020-02-23 13:17:32

那具体也就不清楚了/wq但是您最先输出的是-


by DOs__lx @ 2020-02-23 13:18:11

是不是快输的问题


by WYXkk @ 2020-02-23 13:18:36

@DOs__lx 您的 read 和 write 都是读int输int。。。


by 神山识 @ 2020-02-23 13:19:02

@WYXkk ta不是#define int long long了吗


by WYXkk @ 2020-02-23 13:19:35

@我不是箭毒蛙 他可能是在 namespace fri 后面define 的


by DOs__lx @ 2020-02-23 13:20:15

果然 我把快输删了就A了 QWQ


by WYXkk @ 2020-02-23 13:20:56

您在快输之前 define 一个试试


by DOs__lx @ 2020-02-23 13:23:28

可以的 我直接把fir空间里的int全部变成long long就过了


by DOs__lx @ 2020-02-23 13:24:08

谢谢各位的帮助鸭


上一页 | 下一页