白天根据好几个好心人(大佬)的建议,到P3865找了快读模板,并在多道题上使用均未出现问题
但是本题如果用此快读模板会第9个点WA
把以下code输入改成cin就能A了...
求解何故
错误code:
#include<bits/stdc++.h>
#define For(i,m,n) for(int i=m;i<n;i++)
#define r(a) read(a)
using namespace std;
typedef long long ll;
template <class T>
inline T read(T &x)
{
x=0;
T f=1;
char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
const int INF=0x7fffffff;
const int MAX=2e6+5;
int n;
ll A[MAX];
ll res;
set<ll>::iterator Iter;
set<ll> mp;
void show()
{
cout<<res;
}
void Try()
{
res+=abs(A[0]);
mp.insert(INF);
mp.insert(-INF);
mp.insert(A[0]);
For(i,1,n){
Iter=mp.lower_bound(A[i]);
if(*Iter==A[i]) continue;
set<ll>::iterator lastElement=Iter;//Iter是>=A[i]的第一个元素
Iter--;
res+=min(abs(*Iter-A[i]),abs(*lastElement-A[i]));
mp.insert(A[i]);
}
}
void input_1()
{
r(n);
For(i,0,n) r(A[i]);
// For(i,0,n) cin>>A[i];
}
int main()
{
input_1();
Try();
show();
return 0;
}