We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
#include<bits/stdc++.h>usingnamespacestd;stringltrim(conststring&);stringrtrim(conststring&);vector<string>split(conststring&);/* * Complete the 'gridlandMetro' function below. * * The function is expected to return an INTEGER. * The function accepts following parameters: * 1. INTEGER n * 2. INTEGER m * 3. INTEGER k * 4. 2D_INTEGER_ARRAY track */vector<vector<longlong>>merge(vector<vector<longlong>>tracks){sort(tracks.begin(),tracks.end(),[](vector<longlong>&a,vector<longlong>&b){returna[0]<b[0];});if(tracks.empty()){return{};}vector<vector<longlong>>merged_tracks;merged_tracks.push_back(tracks[0]);for(inti=1;i<tracks.size();i++){longlonglast_end=merged_tracks.back()[1];longlongcurrent_start=tracks[i][0];longlongcurrent_end=tracks[i][1];if(current_start<=last_end+1){merged_tracks.back()[1]=max(last_end,current_end);}else{merged_tracks.push_back(tracks[i]);}}returnmerged_tracks;}longlonggridlandMetro(longlongn,longlongm,intk,vector<vector<int>>track){longlongtotalsquares=n*m;unordered_map<int,vector<vector<longlong>>>mp;for(constauto&i:track){mp[i[0]].push_back({(longlong)i[1],(longlong)i[2]});}for(constauto&pair:mp){constintrow_index=pair.first;constvector<vector<longlong>>&tracks_in_row=pair.second;vector<vector<longlong>>merged_segments=merge(tracks_in_row);longlongcovered_cells_in_row=0;for(constauto&segment:merged_segments){covered_cells_in_row+=segment[1]-segment[0]+1;}totalsquares-=covered_cells_in_row;}returntotalsquares;}intmain(){ofstreamfout(getenv("OUTPUT_PATH"));stringfirst_multiple_input_temp;getline(cin,first_multiple_input_temp);vector<string>first_multiple_input=split(rtrim(first_multiple_input_temp));intn=stoi(first_multiple_input[0]);intm=stoi(first_multiple_input[1]);intk=stoi(first_multiple_input[2]);vector<vector<int>>track(k);for(inti=0;i<k;i++){track[i].resize(3);stringtrack_row_temp_temp;getline(cin,track_row_temp_temp);vector<string>track_row_temp=split(rtrim(track_row_temp_temp));for(intj=0;j<3;j++){inttrack_row_item=stoi(track_row_temp[j]);track[i][j]=track_row_item;}}longlongresult=gridlandMetro(n,m,k,track);fout<<result<<"\n";fout.close();return0;}stringltrim(conststring&str){strings(str);s.erase(s.begin(),find_if(s.begin(),s.end(),not1(ptr_fun<int,int>(isspace))));returns;}stringrtrim(conststring&str){strings(str);s.erase(find_if(s.rbegin(),s.rend(),not1(ptr_fun<int,int>(isspace))).base(),s.end());returns;}vector<string>split(conststring&str){vector<string>tokens;string::size_typestart=0;string::size_typeend=0;while((end=str.find(" ",start))!=string::npos){tokens.push_back(str.substr(start,end-start));start=end+1;}tokens.push_back(str.substr(start));returntokens;}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Gridland Metro
You are viewing a single comment's thread. Return to all comments →
C++ solution with long long instead of int