Cod sursa(job #3249918)

Utilizator iulia_morariuIuli Morariu iulia_morariu Data 18 octombrie 2024 18:48:04
Problema Orase Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
//#include <bits/stdc++.h>
#define in fin
#define out fout

using namespace std;

ifstream fin("orase.in");
ofstream fout("orase.out");

int dp[1000001];

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int m, n; in >> m >> n;
    vector<int> bl[m + 1];

    for(int i = 0; i < n; i++){
        int d, l; in >> d >> l;
        bl[d].push_back(l);
    }

    for(int i = 0; i <= m; i++) sort(bl[i].begin(), bl[i].end());
    dp[0] = bl[0].back();
    int maxi = 0;
    for(int i = 1; i <= m; i++){
        dp[i] = dp[i - 1] + 1;
        if(bl[i].size() >= 1){
            maxi = max(maxi, max(dp[i], dp[i] + bl[i].back()));
            dp[i] = max(dp[i], bl[i].back());
        }
        if(bl[i].size() >= 2){
            maxi = max(maxi, bl[i].back() + bl[i][ bl[i].size() - 2 ]);
        }
    }

    // for(int i = 0; i <= m; i++){
    //     cout << dp[i] << " ";
    // }
    // cout << '\n';

    out << maxi << '\n';

    return 0;
}