Cod sursa(job #2971013)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 26 ianuarie 2023 11:52:20
Problema Vanatoare Scor 0
Compilator cpp-64 Status done
Runda sa_fac_schema Marime 1.3 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAX_N = 16;
int n, m, limit;
struct rabbit{
    int c, v;
    inline bool operator < (const rabbit &rhs) const{
        if(v != rhs.v)
            return v < rhs.v;
        return c % v < rhs.c % rhs.v;
    }
} r[MAX_N + 5], compress[MAX_N + 5];

int sol;
bool out[MAX_N + 5];

int main (){
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr), fout.tie(nullptr);

    fin>>n>>limit;
    for(int i=1; i<=n; i++)
        fin>>r[i].c>>r[i].v;

    sort(r+1, r+n+1);
    for(int i=1, st, dr, maxc; i<=n; i++){
        st = dr = i;
        maxc = r[dr].c;
        while(dr+1 <= n && r[st].v == r[dr+1].v){
            if(r[st].v != 1 && r[st].c % r[st].v != r[dr+1].c % r[dr+1].v)
                break;
            dr++;
            maxc = max(maxc, r[dr].c);
        }

        if(r[st].v == 1){
            if(dr == n){
                fout<<1<<"\n"<<maxc;
                return 0;
            }else
                continue;
        }else{
            compress[++m] = rabbit{maxc, r[st].v};
            i = dr;
        }
    }

    n = m;
    for(int i=1; i<=n; i++)
        r[i] = compress[i];
    return 0;
}
/**
3 10
3 5
1 3
2 3
**/