30/09/2018, 19:33
Ai đó làm ơn debug giúp em đc ko ạ :'(
Em có code như sau:
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
struct data{
int start;
int end;
int val;
int pos;
data(int S,int E,int V,int P):start(S),end(E),val(V),pos(P) {}
};
bool compare(const data&a, const data&b){
return a.val > b.val;
}
vii in;
vector<data> que;
vector<int> result;
vi tree;
int N;
void update(int n){
int k=n+1;
tree[k]+=1;
while(k<=N){
k+=(k&(-k));
tree[k]+=1;
}
}
int get(int n){
int s=0;
while(n>0){
s+=tree[n];
n-=(n&(-n));
}
return s;
}
int main(){
int i,j;
scanf("%d",&N);
tree.assign(N+1,0);
in.assign(N,ii());
for(i=0;i<N;i++){
int a;
scanf("%d",&in[i].first);
in[i].second=i;
}
sort(in.begin(),in.end(),greater<ii>());
int quest;
scanf("%d",&quest);;
result.assign(quest,0);
for(i=0;i<quest;i++){
int ii,jj,kk;
scanf("%d %d %d",&ii,&jj,&kk);;
que.push_back(data(ii,jj,kk,i));
}
sort(que.begin(),que.end(),compare);
int position =0 ;
for(i=0;i<que.size();i++){
data vv=que[i];
int s=vv.start , e=vv.end ,v=vv.val, p=vv.pos;
while(position<N && in[position].first > v){
update(in[position].second);
position++;
}
result[p]=get(e) - get(s-1);
}
for(i=0;i<result.size();i++){
printf("%d-",i);
printf("%d
",result[i]);
}
return 0;
}
Và input thế này
5
5 1 2 3 4
3
2 1 4
4 5 6
3 3 7
và vì 1 lý do nào đó mà khi in xong rồi nó hiện lên
... .exe has stopped working
Ai giải thích và debug hộ em đc ko ạ ToT em cảm ơn ạ
Bài liên quan