A

#include <bits/stdc++.h> using namespace std ; string s , t ; int num ; int main () { cin >> s >> t ; for(int i = 0 ; i < s.size() ; i ++) { if(s[i] == t[i]) num ++ ; } cout << num << endl ; return 0 ; } 

B

#include <bits/stdc++.h> using namespace std ; int n , m , ans = 0 ; int main () { cin >> n >> m ; if(m == 1) { cout << 0 << endl ; return 0 ; } int c = 1 ; while(c < m) { c += n-1 ; ans ++ ; } cout << ans << endl ; return 0 ; } 

C

#include <bits/stdc++.h> using namespace std ; int n , m , ans = 0 ,a[120000] ; int main () { cin >> n ;int maxx = 0 , ans = 0 ; for(int i = 1 ; i <= n ; i ++) { cin >> a[i] ; if(a[i] <= a[i-1]) maxx ++ , ans = max(maxx,ans) ; else maxx = 0 ; } cout << ans << endl ; return 0 ; } 

D

#include <bits/stdc++.h> using namespace std ; #define int long long int n , m , ans = 0 ; signed main () { cin >> n ; cout << n*(n-1)/2 << endl ; return 0 ; } 

E

#include <bits/stdc++.h> #define int long long #define maxn 1000010 using namespace std ; struct dy { int y , next ; }A[maxn]; int n , num , cnt , tot, ans ; int head[maxn] , a[1010][1010] , vis[1010][1010] ; int in[maxn] , t[maxn] , day[maxn] ; void add(int u,int v) { A[++cnt].y = v ; A[cnt].next = head[u] ; head[u] = cnt ; return ; } void topsort() { for(int i = 1 ; i <= tot ; i ++) { int u = t[i] ; for(int j = head[u] ; j ; j = A[j].next) { int v = A[j].y ; day[v] = day[u] + 1 ; in[v] -- ; if(!in[v]) t[++tot] = v ; } } for(int i = 1 ; i <= num ; i ++) ans=max(ans,day[i]); return; } signed main() { scanf("%d",&n); for(int i = 1 ; i <= n ; i ++) { for(int j = 1 ; j < n ; j ++) { scanf("%d",&a[i][j]) ; if(!vis[i][j]&&!vis[j][i]) vis[i][j] = vis[j][i] = ++num ; } } for(int i = 1 ; i <= n ; i ++) { for(int j = 2 ; j < n ; j ++) { add(vis[i][a[i][j-1]],vis[i][a[i][j]]); in[vis[i][a[i][j]]] ++ ; } } for(int i = 1 ; i <= num ; i ++) if(!in[i]) { t[++tot] = i ; day[i] = 1 ; } topsort() ; if(tot != num) puts("-1"); else printf("%d\n",ans); return 0; }