水题。
对于两个$0$,肯定是先删去后面的$0$,再删去前面的$0$。
对于两个$1$,肯定是先删去前面的$1$,再删去后面的$1$。
对于一个$0$和一个$1$,无论先删哪一个,对答案做出的贡献都是一样的。
综上所述,可以先从后往前删完$0$,然后从前往后删完$1$;或者先从前往后删完$1$,然后从后往前删完$0$;答案是一样的。
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int a,n; int main() { scanf("%d",&n); long long ans=0; int sum=0; for(int i=1;i<=n;i++) { scanf("%d",&a); if(a==1) sum++; else ans=ans+sum; } printf("%lld ",ans); return 0; }