Submission #225664

#TimeUsernameProblemLanguageResultExecution timeMemory
225664FashoPilot (NOI19_pilot)C++14
100 / 100
737 ms83192 KiB
#include <bits/stdc++.h> #define N 1000005 #define ll long long int #define MP make_pair #define pb push_back #define ppb pop_back #define sp " " #define endl "\n" #define fi first #define se second #define ii pair<int,int> #define lli pair<ll,ll> #define fast cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false) #define fast2 freopen ("badhair.gir","r",stdin);freopen ("badhair.cik","w",stdout); #define mod 1000000007 #define fs(x,y) for(ll i=1;i<=y;i++) cin>>x[i] #define fo(i,x,y) for(ll i=x;i<=y;i++) #define INF 1000000000005 #define ull unsigned long long int using namespace std; ll n,m,ar[N],sum,t,ans[N],sz[N],dad[N],l=0; lli p[N],pl[N]; ll find(ll x) { if(dad[x]==x) return x; return dad[x]=find(dad[x]); } void unite(int x,int y) { int dx=find(x); int dy=find(y); if(dx==dy) return; sz[dx]+=sz[dy]; dad[dy]=dx; } void f(int x,int z) { if(find(x)==find(z)) return; int y=find(z); y=sz[y]; sum+=sz[find(x)]*y; // cout<<x<<sp<<y<<sp<<sz[find(x)]<<sp<<sz[find(y)]<<endl; unite(x,z); } void add(int ind) { while(p[l+1].fi<=pl[ind].fi && l<n) { l++; int x=p[l].se; sum++; // cout<<"[d]"<<sp<<ind<<endl; if(ar[x-1]<=ar[x] && x-1!=0) f(x,x-1); if(ar[x+1]<=ar[x] && x+1!=n+1) f(x,x+1); } } int main() { fast; cin>>n>>m; fo(i,1,n) dad[i]=i,sz[i]=1; fo(i,1,n) cin>>p[i].fi,p[i].se=i,ar[i]=p[i].fi; // cout<<endl; // fo(i,1,n) // cout<<ar[i]<<sp; // cout<<endl<<endl; fo(i,1,m) cin>>pl[i].fi,pl[i].se=i; sort(p+1,p+n+1); sort(pl+1,pl+m+1); fo(i,1,m) { add(i); ans[pl[i].se]=sum; } fo(i,1,m) cout<<ans[i]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...