Submission #1086701

#TimeUsernameProblemLanguageResultExecution timeMemory
1086701modwweSeptember (APIO24_september)C++17
0 / 100
4 ms2908 KiB
#pragma GCC optimize("Ofast,unroll-loops") #include<bits/stdc++.h> //#define int long long //#define ll long long #define down cout<<'\n'; #define debug cout<<" cucuucucuuu",down #define NHP ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0); #define modwwe int t;cin>>t; while(t--) #define bit(i,j) (i>>j&1) #define sobit(a) __builtin_popcountll(a) #define task "test" #define fin(x) freopen(x".inp","r",stdin) #define fou(x) freopen(x".ans","w",stdout) #define pb push_back #define checktime cerr << (double)clock() / CLOCKS_PER_SEC * 1000 << " ms"; using namespace std; #define getchar_unlocked getchar inline int scan() { char c = getchar_unlocked(); int x = 0; while(c<'0'||c>'9') { c=getchar_unlocked(); } while(c>='0'&&c<='9') { x=(x<<1)+(x<<3)+c-'0'; c=getchar_unlocked(); } return x; } void phongbeo(); const int inf=1e9; const int mod2=1e9+9; const int mod1=998244353; struct icd { long double a; int b; }; struct ib { int a; int b; }; struct ic { int a,b,c; }; struct id { int a,b,c,d; }; struct ie { int a,b,c,d,e; }; int n,m,s1,s2,s4,s3,sf,k,s5,s6,mx,s7,s8,s9,mx2,res,dem2=0,dem=0,s33,dem3,dem4,l,r,mid,l2,r2,center; int i,s10,s12; int kk; int el=29; vector<ib> v2; vector<int> v[100001]; ib a[100001]; void dfs() { for(int x=n;x>=2;--x){ ib xx= {inf,0}; for(auto f:v[x]) { if(a[f].b>=a[x].a) xx.a=min(xx.a,a[f].a), xx.b=max(xx.b,a[f].b); } if(x!=1) if(v[x].size()!=0&&xx.a!=inf) { if(xx.b>a[x].a) { xx.a=min(xx.a,a[x].a); xx.b=max(xx.b,a[x].b); a[x]=xx; } } } } bool cmp(ib a,ib b) { if(a.a==b.a) return a.b>b.b; return a.a<b.a; } int solve(int N, int M, vector<int> F, vector<vector<int>> S) { n=N; m=M; for(int i=1; i<=n; i++) { l=F[i-1]; if(i!=1) { v[l+1].pb(i); } a[i]= {inf,0}; } for(int i=1; i<=m; i++) { for(int j=1; j<=n-1; j++) l=S[i-1][j-1],l++,a[l].a=min(a[l].a,j),a[l].b=max(a[l].b,j); } dfs(); for(int i=2; i<=n; i++) { v2.pb(a[i]); } sort(v2.begin(),v2.end(),cmp); s4=0; dem=0; for(auto x:v2) { if(x.a>s4)dem++; s4=max(s4,x.b); } return dem; } /* main() { freopen("test.inp","r",stdin); freopen("test.ans","w",stdout); cin>>n>>m; vector<vector<int>> S; S.resize(m,vector<int>(n)); vector<int> F; for(int i=1;i<=n;i++) { cin>>l; F.pb(l); } for(int i=0;i<m;i++) { for(int j=0;j<n;j++ ) cin>>S[i][j]; } cout<<solve(n,m,F,S); } */
#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...