Submission #103020

#TimeUsernameProblemLanguageResultExecution timeMemory
103020rzbtPoklon (COCI17_poklon)C++14
0 / 140
564 ms42232 KiB
#include <bits/stdc++.h> #define mp make_pair #define pb push_back #define F first #define S second #define all(x) x.begin(),x.end() #define MAXN 500005 using namespace std; int n,q; int niz[MAXN]; set<int> s; map<int,int> m; int prosli[MAXN]; int proslix[MAXN]; int bit[MAXN]; void dodaj(int p,int x){ if(p==0)return; for(;p<MAXN;p+=(-p)&p) bit[p]+=x; } int dobij(int p){ int z=0; for(;p>0;p-=(-p)&p) z+=bit[p]; return z; } int res[MAXN]; vector<pair<int,int>> omega [MAXN]; int main() { scanf("%d %d", &n, &q); for(int i=1;i<=n;i++){ scanf("%d",niz+i); s.insert(niz[i]); } int bbb=1; for(auto x:s){ m[x]=bbb; bbb++; } for(int i=1;i<=n;i++){ niz[i]=m[niz[i]]; prosli[i]=proslix[niz[i]]; proslix[niz[i]]=i; } for(int i=1;i<=q;i++){ int t1,t2; scanf("%d %d", &t1, &t2); omega[t2].pb(mp(t1,i)); } for(int i=1;i<=n;i++){ dodaj(prosli[i],1); dodaj(prosli[prosli[i]],-2); for(auto x:omega[i]) res[x.second]=dobij(i)-dobij(x.first-1); } for(int i=1;i<=q;i++)printf("%d\n",res[i]); return 0; }

Compilation message (stderr)

poklon.cpp: In function 'int main()':
poklon.cpp:36:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &n, &q);
     ~~~~~^~~~~~~~~~~~~~~~~
poklon.cpp:38:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",niz+i);
         ~~~~~^~~~~~~~~~~~
poklon.cpp:53:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &t1, &t2);
         ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...