Submission #40940

#TimeUsernameProblemLanguageResultExecution timeMemory
40940HassoonyPoklon (COCI17_poklon)C++14
84 / 140
5089 ms10748 KiB
#include<bits/stdc++.h> #include<unordered_map> using namespace std; typedef long long ll; typedef double D; const ll inf=(1ll<<61); const int mod=1e9+7; const int MX=5e5+9; const int SQ=300; int n,q,ans,res[MX],a[MX],xblock,yblock; pair<int,pair<int,int> >Q[MX]; unordered_map<int,int>cnt; bool cmp(pair<int,pair<int,int> > A,pair<int,pair<int,int> > B){ xblock=A.first/SQ; yblock=B.first/SQ; if(xblock!=yblock)return xblock<yblock; return A.second.first<B.second.first; } void add(int x){ ans-=(cnt[x]==2); cnt[x]++; ans+=(cnt[x]==2); } void rem(int x){ ans-=(cnt[x]==2); cnt[x]--; ans+=(cnt[x]==2); } int main(){ cin>>n>>q; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=0;i<q;i++){ scanf("%d%d",&Q[i].first,&Q[i].second.first); Q[i].second.second=i; } sort(Q,Q+q,cmp); int mol=1,mor=0,L,R; for(int i=0;i<q;i++){ L=Q[i].first,R=Q[i].second.first; while(mor<R){ add(a[++mor]); } while(mor>R){ rem(a[mor--]); } while(mol<L){ rem(a[mol++]); } while(mol>L){ add(a[--mol]); } res[Q[i].second.second]=ans; } for(int i=0;i<q;i++)printf("%d\n",res[i]); }

Compilation message (stderr)

poklon.cpp: In function 'int main()':
poklon.cpp:32:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&a[i]);
                          ^
poklon.cpp:35:53: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&Q[i].first,&Q[i].second.first);
                                                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...