Cod sursa(job #2288598)

Utilizator rangrazvanRang Razvan Victor rangrazvan Data 23 noiembrie 2018 17:51:43
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.98 kb
#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){
            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]);
    }
    suma+=getMax(oi);
    fout<<suma;
    /*for(int i=0;i<oi.size();i++){
        cout<<v[i];
    }*/
    return 0;
}