제출 #224558

#제출 시각아이디문제언어결과실행 시간메모리
224558kshitij_sodaniPilot (NOI19_pilot)C++17
89 / 100
1095 ms55160 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define a first #define b second #define pb push_back typedef long long llo; llo par[1000001]; llo ss[1000001]; llo find(llo no){ if(par[no]==no){ return no; } par[no]=find(par[no]); return par[no]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); llo n,q; cin>>n>>q; for(llo i=0;i<n;i++){ par[i]=i; ss[i]=0; } pair<llo,llo> tt[n]; llo aa; for(llo i=0;i<n;i++){ cin>>aa; tt[i]={aa,i}; } llo ans2[q]; pair<llo,llo> it[q]; for(llo i=0;i<q;i++){ cin>>aa; it[i]={aa,i}; } sort(tt,tt+n); sort(it,it+q); llo ind=0; llo ans=0; for(llo k=0;k<q;k++){ pair<llo,llo> nn=it[k]; while(ind<n){ if(tt[ind].a<=nn.a){ ss[tt[ind].b]=1; ans+=1; if(tt[ind].b>0){ if(ss[tt[ind].b-1]>0){ llo x=find(tt[ind].b-1); /*ans-=calc(x); ans-=calc(tt[ind].b);*/ ans+=ss[x]; ss[x]+=ss[tt[ind].b]; par[tt[ind].b]=x; // ans+=calc(x); } } if(tt[ind].b<n-1){ if(ss[tt[ind].b+1]>0){ llo y=find(tt[ind].b); llo x=find(tt[ind].b+1); if(ss[x]>ss[y]){ /* ans-=calc(x); ans-=calc(y);*/ ans+=ss[x]*ss[y]; ss[x]+=ss[y]; par[y]=x; // ans+=calc(x); } else{ /*ans-=calc(x); ans-=calc(y);*/ ans+=ss[x]*ss[y]; ss[y]+=ss[x]; par[x]=y; /*ans+=calc(y);*/ } } } ind+=1; } else{ break; } } // cout<<nn.b<<" "<<ans<<endl; ans2[nn.b]=ans; } for(llo i=0;i<q;i++){ cout<<ans2[i]<<endl; } return 0; }
#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...