Can someone please look at my code and tell me why its giving Runtime error SIGSEGV.
I don’t think I’m using too much memory here for the subtask considering n is 1000.
Problem - CodeChef: Practical coding for everyone
Solution - CodeChef: Practical coding for everyone
#include <iostream>
#include<bits/stdc++.h>
#define ll long long
#define int ll
#define pb push_back
#define pii pair<int,int>
#define f(i,n) for(int i=0;i<n;i++)
#define vi vector<int>
using namespace std;
const ll mod = 998244353 ;
void solve(){
ll c, n , m;
cin >> c >> n >> m;
vector<pair<int,int>> orig,seg;
map<pii,int> mp;
for(int i=1;i<=c;i++){
int cl;
cin >> cl;
for(int j=1;j<=cl;j++){
pair<int,int> p;
cin >> p.first >> p.second;
if(mp.find(p)==mp.end())
orig.pb(p);
mp[p]=1;
}
}
sort(orig.begin(),orig.end(),[](pair<ll,ll> p1, pair<ll,ll>p2){
if(p1.first <= p2.first){
return true;
}else return false;
});
int i=1;
pair<int,int> p = make_pair(orig[0].first,orig[0].second);
seg.pb(p);
while(i<orig.size()){
if(orig[i].first <= seg.back().second){
seg.back().second = max(orig[i].second , seg.back().second);
}
else{
seg.pb({orig[i].first,orig[i].second});
}
i++;
}
//cout << seg.size()<<endl;
int vis[2000]{0};
for(auto a : seg){
for(int i=a.first;i<=a.second;i++){
vis[i]=1;
}
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
seg.pb({i,i});
}
}
ll sz = seg.size();
cout << (m*sz)%mod<<endl;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while(t--)
solve();
return 0;
}
Thanks.