Pagini recente » Cod sursa (job #697322) | Cod sursa (job #1303523) | Cod sursa (job #1000909) | Cod sursa (job #2162061) | Cod sursa (job #2288599)
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
#include <vector>
#define pb push_back
using namespace std;
struct oaie{
int dist,blana;
friend ifstream& operator>>(ifstream& in,oaie& o){
in>>o.dist>>o.blana;
return in;
}
friend ostream& operator<<(ostream& out,oaie& o){
out<<o.dist<<" "<<o.blana<<endl;
return out;
}
/*friend bool operator<(const oaie a,const oaie b){
if(a.dist==b.dist){
if(a.blana>b.blana) return true;
return false;
}
if(a.dist>b.dist) return true;
return false;
}*/
};
int getMax(vector<oaie> &o){
oaie maxi=o[0];
int ind=0;
for(int i=1;i<o.size();i++){
if(o[i].blana>maxi.blana) {maxi = o[i];ind=i;}
}
for(int i=ind;i<o.size()-1;i++){
o[i]=o[i+1];
}
o.pop_back();
return maxi.blana;
}
int compare(oaie a,oaie b){
if(a.dist==b.dist) return a.blana<b.blana;
return a.dist<b.dist;
}
int main()
{
ifstream fin("date.in");
ofstream fout("date.out");
int n,x,l;
fin>>n>>x>>l;
vector<oaie> v;
oaie o;
for(int i=0;i<n;i++){
fin>>o;
v.pb(o);
}
sort(v.begin(),v.end(),compare);
/*for(int i=0;i<v.size();i++){
cout<<v[i];
}*/
vector<oaie> oi;
long suma=0;
int i=0,intr=x%l;
while(v[i].dist<=intr){
oi.pb(v[i]);
i++;
}
intr+=l;
if(oi.size()>0){
suma+=getMax(oi);
}
for(i=i;i<n && v[i].dist<=x;i++){
if(v[i].dist>intr && oi.size()>0){
suma+=getMax(oi);
/*for(int i=0;i<oi.size();i++)
cout<<oi[i].blana<<" ";
cout<<"suma este "<<suma<<endl;
*/
intr+=l;
}
oi.pb(v[i]);
}
if(oi.size()>0)
suma+=getMax(oi);
fout<<suma;
/*for(int i=0;i<oi.size();i++){
cout<<v[i];
}*/
return 0;
}