QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#357736 | #3300. Cactus Competition | jinqihao2023 | WA | 1ms | 7952kb | C++14 | 1.8kb | 2024-03-19 10:16:09 | 2024-03-19 10:16:10 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,inf=2e9;
typedef long long ll;
int n,m,a[N],b[N],r[N],l[N],minn[N],k,num[N],c[N],minn1[N];
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=m;i++)scanf("%d",&b[i]),b[i]=-b[i]-1;
for(int i=1;i<=n;i++)c[++c[0]]=a[i];
for(int i=1;i<=m;i++)c[++c[0]]=b[i];
sort(c+1,c+c[0]+1),c[0]=unique(c+1,c+c[0]+1)-c-1;
for(int i=1;i<=n;i++)a[i]=lower_bound(c+1,c+c[0]+1,a[i])-c;
for(int i=1;i<=m;i++)b[i]=lower_bound(c+1,c+c[0]+1,b[i])-c;
for(int i=1;i<=n;i++)printf("%d ",a[i]);printf("\n");
for(int i=1;i<=m;i++)printf("%d ",b[i]);printf("\n");
minn[0]=inf,k=1;for(int i=1;i<=m;i++)minn[i]=min(minn[i-1],b[i]);
minn1[m+1]=inf;for(int i=m;i>=1;i--)minn1[i]=min(minn1[i+1],b[i]);
for(int i=2;i<=m;i++)if(b[i]<b[k])k=i;
for(int i=1;i<=n;i++)
{
int now=0,fl=0;bool flag=0;
for(int j=i;j<=n;j++)
{
while(now<k && a[j]>b[now+1])now++;
if(now==k){fl=j;break;}
if(a[j]<=minn[now]){fl=j;flag=1;break;}
}
if(flag){i=fl;continue;}
r[i]=fl;
}
for(int i=n;i>=1;i--)
{
int now=m+1,fl=0;bool flag=0;
for(int j=i;j>=1;j--)
{
while(now>k && a[j]>b[now-1])now--;
if(now==k){fl=j;break;}
if(a[j]<=minn1[now]){fl=j;flag=1;break;}
}
if(flag){i=fl;continue;}
l[i]=fl;
}
// for(int i=1;i<=n;i++)printf("%d %d\n",l[i],r[i]);
vector<int>temp;
temp.push_back(0);
for(int i=1;i<=n;i++)if(a[i]<=b[k])temp.push_back(i);
temp.push_back(n+1);
int len=temp.size();
ll ans=0;
for(int i=0;i<len-1;i++)
{
int nl=temp[i]+1,nr=temp[i+1]-1;
if(nl>nr)continue;
for(int j=nl;j<=nr;j++)if(l[j]>=nl)num[l[j]]++;
for(int j=nr-1;j>=nl;j--)num[j]+=num[j+1];
for(int j=nl;j<=nr;j++)if(r[j]<=nr)ans+=num[r[j]];
}
printf("%lld\n",ans);
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 7952kb
input:
3 3 -1 0 1 -1 0 1
output:
2 3 4 3 2 1 1
result:
wrong answer 1st lines differ - expected: '1', found: '2 3 4 '