Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52703 | xujindong | 木薯与身高 | C++ | 通过 | 100 | 263 MS | 8796 KB | 886 | 2022-07-20 11:50:49 |
#include<bits/stdc++.h> using namespace std; int n; namespace subtask1{ int a[1005]; long long ans=0; void solve(int n){ for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=n;i++){ int pos=i; for(int j=i-1;j>=1;j--)if(a[j]>a[i])pos=j; ans+=i-pos; } printf("%lld\n",ans); } } namespace subtask2{ deque<pair<int,int> >q,q1; long long ans=0; void solve(int n){ for(int i=1,a;i<=n;i++){ scanf("%d",&a); pair<int,int>temp; while(!q.empty()&&q.front().first<=a)temp=q.front(),q.pop_front(),q1.push_back(temp); q.push_back(make_pair(a,i)),ans+=i-q.front().second; while(!q1.empty())temp=q1.back(),q1.pop_back(),q.push_front(temp); } printf("%lld\n",ans); } } int main(){ scanf("%d",&n); if(n<=1000)subtask1::solve(n); else subtask2::solve(n); return 0; }