Submission #1191513

#TimeUsernameProblemLanguageResultExecution timeMemory
1191513MalixSeptember (APIO24_september)C++20
45 / 100
234 ms7104 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<ll,ll,ll> ti; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) ll INF=1000000000000000010; int inf=1e9+10; ll M=1e9+7; int solve(int n, int m, std::vector<int> p, std::vector<std::vector<int>> a) { int ans=0,pos=0; vi cnt(n,0); REP(i,1,n)cnt[p[i]]++; set<int> st,st2,tmp; queue<int> q; bool flag=1; while(pos<n-1){ while(flag||st.size()!=pos){ flag=0; tmp.clear(); REP(i,0,m)tmp.insert(a[i][pos]); for(int k:tmp){ st.insert(k); if(cnt[k]==0){ cnt[p[k]]--; if(cnt[p[k]]==0)q.push(p[k]); } else st2.insert(k); } pos++; } while(!q.empty()){ int x=q.front(); q.pop(); if(st2.count(x)>0){ cnt[p[x]]--; if(cnt[p[x]]==0)q.push(p[x]); st2.erase(x); } } if(st2.empty())ans++; flag=1; } return ans; }
#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...