Cod sursa(job #3249935)

Utilizator iulia_morariuIuli Morariu iulia_morariu Data 18 octombrie 2024 19:03:53
Problema Orase Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 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");

vector<int> bl[1000001];

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

    int m, n; in >> m >> n;
    // for(int i = 0; i <= m; i++) dp[i] = 0;

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

    int dp[2];

    for(int i = 0; i <= m; i++) sort(bl[i].begin(), bl[i].end());
    if(!bl[0].empty()) dp[0] = bl[0].back();
    int maxi = 0;
    for(int i = 1; i <= m; i++){
        dp[i % 2] = dp[(i - 1) % 2] + 1;
        if(bl[i].size() >= 1){
            maxi = max(maxi, max(dp[i % 2], dp[i % 2] + bl[i].back()));
            dp[i % 2] = max(dp[i % 2], 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;
}