Участник:Rimon/Save Area 11

Материал из DISCOPAL
Перейти к: навигация, поиск

https://www.spoj.com/problems/SVAREA11/

C++(gcc8.3)

 
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <numeric>
#include <algorithm>
 
#include <vector>
 
 
 
using namespace std;
 
const int me = 10025;
 
int T, N, M;
int has[me];
 
int main() {
 
 
    scanf("%d", &T);
    for(int c = 0; c < T; c ++){
        scanf("%d%d", &N, &M);
        vector<pair<int, int>> data(M);
        for(int i = 0; i < M; i ++){
            scanf("%d%d", &data[i].first, &data[i].second);
        }
        sort(data.begin(), data.end());
        fill(has, has + me, 0);
        bool good = true;
        for(int i = 0; i < M; i ++){
            N += has[data[i].first];
            if(N < 1){
                good = false;
                break;
            }
            N --;
            has[data[i].second + 1] ++;
        }
        printf("Plan %d: ", c + 1);
        if(good == true){
            puts("Yes");
        }
        else{
            puts("No");
        }
    }
 
    return 0;
}