Submission #1298371

#TimeUsernameProblemLanguageResultExecution timeMemory
1298371iamsazidhSeptember (APIO24_september)C++20
100 / 100
92 ms6148 KiB
#include "september.h"
//ᴇᴀᴄʜ ᴘᴇʀꜱᴏɴ ᴡɪʟʟ ᴏɴʟʏ ʜᴀᴠᴇ ᴡʜᴀᴛ ᴛʜᴇʏ ᴇɴᴅᴇᴀᴠᴏᴜʀᴇᴅ ᴛᴏᴡᴀʀᴅꜱ [53:39]
//Author: Sazid Hasan
#include <bits/stdc++.h>
using namespace std;

typedef long long              ll;
typedef double                 dl;
typedef vector<int>            vi;
typedef vector<vector<int>>    vii;
typedef vector<ll>             vl;
typedef vector<bool>           vb;
typedef pair<int,int>         pii;
typedef pair<ll, ll>          pll;

#define ff                first
#define ss                second
#define all(a)            a.begin(),a.end()
#define gcd(a,b)          __gcd(a,b)
#define lcm(a,b)          (a*(b/gcd(a,b)))
#define spc               " "

#ifdef ONLINE_JUDGE
    #define debarr(array)
    #define deb(x)
    #define del
#else
    #define debarr(array)  for(int w = 0; w < array.size(); w++) cerr << #array << "-" << w << " = " << array[w] << endl;
    #define deb(x)         cerr << #x << " = " << x << endl;
    #define del cerr << '\n';
#endif


const double PI =         acos(-1);
const int MOD =           1000000007;
const int inf =           (2147483647);




int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
    vi till(N, -1);
    for(auto x: S){
        for(int i = 0; i < N-1; i++) till[x[i]] = max(till[x[i]], i);
    }
    vi deg(N, 0);
    for(int i = 1; i < N; i++){
        deg[F[i]]++;
    }
    queue<int> que;
    for(int i = 0; i < N; i++){
        if(deg[i]==0) que.push(i);
    }
    while(!que.empty()){
        int ff = que.front(); que.pop();
        if(ff==0) continue;
        till[F[ff]] = max(till[F[ff]], till[ff]);
        deg[F[ff]]--;
        if(deg[F[ff]]==0) que.push(F[ff]);
    }
    int ptr = 0;
    int cnt = 0;
    while(ptr < N-1){
        int now = ptr;
        while (now<=ptr)
        {
            for(int i = 0; i < M; i++){
                ptr = max(ptr, till[S[i][now]]);
            }
            now++;
        }

        ptr++, cnt++;
    }



    return cnt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...