#include "bits/stdc++.h"
#define MAXN 100009
#define INF 1000000007
#define mp(x,y) make_pair(x,y)
#define all(v) v.begin(),v.end()
#define pb(x) push_back(x)
#define wr cout<<"----------------"<<endl;
#define ppb() pop_back()
#define tr(ii,c) for(__typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++)
#define ff first
#define ss second
#define my_little_dodge 46
#define debug(x) cerr<< #x <<" = "<< x<<endl;
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
int a[MAXN],b[MAXN],c[MAXN],id[MAXN];
int x[MAXN],y[MAXN],z[MAXN],di[MAXN];
vector<int>v;
int en[MAXN],bel[MAXN],cur,sz,n,q;
bool cmp(int xx,int yy){
return (a[xx]>a[yy]);
}
bool cmp1(int xx,int yy){
return (x[xx]>x[yy]);
}
int who(int x){
return (lower_bound(all(v),x)-v.begin())+1;
}
void init(){
int BLOK=sqrt(n);cur=1;
for(int i=1;i<=sz;i++){
bel[i]=cur;
if(i%BLOK==0){
if(i==n)
en[cur]=i;
else
en[cur++]=i;
}
}en[cur]=n;
}
vector<int>adj[MAXN];
int arr[MAXN],ans[MAXN];
void upd(int p,int v){
arr[p]=v;
adj[bel[p]].pb(v);
sort(all(adj[bel[p]]));
}
int get(int p,int v){
int ans=0;
for(int i=p;i<=en[bel[p]];i++)
ans+=(arr[i]>=v);
for(int i=bel[p]+1;i<=cur;i++)
ans+=int(adj[i].size())-int(lower_bound(all(adj[i]),v)-adj[i].begin());
return ans;
}
map<int,int>pm;
int main(){
memset(arr,-1,sizeof arr);
//freopen("file.in", "r", stdin);
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d%d",a+i,b+i);
c[i]=a[i]+b[i];
id[i]=i;
pm[b[i]]++;
b[i]+=pm[b[i]]-1;
v.pb(b[i]);
}
sort(all(v));v.erase(unique(all(v)),v.end());
sz=int(v.size());
init();
sort(id+1,id+n+1,cmp);
for(int i=1;i<=q;i++)
scanf("%d%d%d",x+i,y+i,z+i),di[i]=i;
sort(di+1,di+q+1,cmp1);
int p=1;
for(int i=1;i<=q;i++){
while(p<=n and a[id[p]]>=x[di[i]])
upd(who(b[id[p]]),c[id[p]]),p++;
ans[di[i]]=get(who(y[di[i]]),z[di[i]]);
}
for(int i=1;i<=q;i++)
printf("%d\n",ans[i]);
return 0;
}
Compilation message
examination.cpp: In function 'int main()':
examination.cpp:86:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
86 | for(int i=1;i<=q;i++)
| ^~~
examination.cpp:88:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
88 | return 0;
| ^~~~~~
examination.cpp:64:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
64 | scanf("%d%d",&n,&q);
| ~~~~~^~~~~~~~~~~~~~
examination.cpp:66:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
66 | scanf("%d%d",a+i,b+i);
| ~~~~~^~~~~~~~~~~~~~~~
examination.cpp:78:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
78 | scanf("%d%d%d",x+i,y+i,z+i),di[i]=i;
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
3052 KB |
Output is correct |
2 |
Correct |
2 ms |
3052 KB |
Output is correct |
3 |
Correct |
3 ms |
3052 KB |
Output is correct |
4 |
Correct |
3 ms |
3052 KB |
Output is correct |
5 |
Correct |
3 ms |
3052 KB |
Output is correct |
6 |
Correct |
2 ms |
3052 KB |
Output is correct |
7 |
Correct |
12 ms |
3564 KB |
Output is correct |
8 |
Correct |
10 ms |
3564 KB |
Output is correct |
9 |
Incorrect |
9 ms |
3564 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1206 ms |
13884 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1206 ms |
13884 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
3052 KB |
Output is correct |
2 |
Correct |
2 ms |
3052 KB |
Output is correct |
3 |
Correct |
3 ms |
3052 KB |
Output is correct |
4 |
Correct |
3 ms |
3052 KB |
Output is correct |
5 |
Correct |
3 ms |
3052 KB |
Output is correct |
6 |
Correct |
2 ms |
3052 KB |
Output is correct |
7 |
Correct |
12 ms |
3564 KB |
Output is correct |
8 |
Correct |
10 ms |
3564 KB |
Output is correct |
9 |
Incorrect |
9 ms |
3564 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |