Submission #1198753

#TimeUsernameProblemLanguageResultExecution timeMemory
1198753Adeeb_obedoSeptember (APIO24_september)C++20
100 / 100
107 ms6664 KiB
#include<bits/stdc++.h> #define int long long #define ld double #define _1 first #define _2 second #define yes cout<<"Yes\n" #define nah cout<<"No\n" #define FFF ios_base::sync_with_stdio(0);cin.tie(0); #define ipr pair<int,int> #define ret return #define intt int32_t #define mid ((l+r)/2) #define pb push_back #define lll __int128 using namespace std; int tst, ts; intt mo = 1e9+7, dx[] = {-1, 1, 0, 0,-1,-1,1,1}, dy[] = {0, 0, -1, 1,-1,1,-1,1}; int mul( int x, int y ) { ret ( ( x % mo ) * ( y % mo ) ) % mo; ret x*y; } int pwo( int x, int y ) { int res = 1; for( int i = 63; i + 1; i-- ) res = mul( res, res * ( ( 1ll << i )&y ? x : 1 ) ); ret res; } int dvii( int x, int y ) { ret mul( x, pwo( y, mo - 2 ) ); } int oo( char x ) { ret ( int )x - '0'; } int lgg( int x, int y ) { int u = 0; while( x ) { u++; x /= y; } ret u; } int mun( int x, int y ) { while( x < y )x += mo; ret ( x - y ) % mo; } int add( int x, int y ) { ret x + y - ( mo * ( x + y >= mo ) ); ret x + y; } int lcm( int x, int y ) { ret ( x * y ) / __gcd( x, y ); } #include "september.h" #define endl '\n'; const int M =4007, N = 2e5 + 7, N2 = 5e3 + 7, inf = 2e18 + 7; int n,m; intt solve(intt Nn, intt Mm, vector<intt> pr,vector<vector<intt>> a){ n=Nn,m=Mm; vector<int>v(n),mp(n,m); for(int i=1;i<n;i++) v[pr[i]]++; int o=0,ans=0; set<ipr>st; for(int i=0;i<n-1;i++){ st.insert({v[a[0][i]],a[0][i]}); while(st.size()){ ipr p=*st.begin(); if(p._1>0) break; st.erase(p); ipr pp={v[pr[p._2]],pr[p._2]}; v[pp._2]--; if(st.count(pp)){ st.erase(pp); pp._1--; st.insert(pp); } } for(int j=0;j<m;j++){ mp[a[j][i]]--; o+=(mp[a[j][i]]==0); } if(o==i+1&&st.size()==0) ans++; } ret ans; } /* intt main() { FFF cin>>n>>m; int x; vector<int>v;vector<vector<int>>vv; for(int j=0;j<=m;j++){ for(int i=0;i<n-1+(j==m);i++){ int x; cin>>x; v.pb(x); } if(j!=m){ vv.pb(v); v.clear(); } } //freopen("revegetate.in", "r", stdin); //freopen("revegetate.out", "w", stdout); tst = 1; //cin >> tst; for ( ts = 1; ts <= tst; ts++ ) { cout<<solve(n,m,v,vv)<<endl; } } */
#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...