Para este problema, basta checar quantos elementos do vetor ordenado são iguais ao do vetor original nas mesmas posições, ou seja, quantas posições tem uma pessoa que não trocou de lugar.
#include<stdlib.h>#include<stdio.h>intcomp(constvoid*a,constvoid*b){return*(int*)b -*(int*)a;}intmain(){int N, M, resposta;int original[1000], ordenado[1000];scanf("%d",&N);for (int k =0; k < N; ++k) {scanf("%d",&M);for (int i =0; i < M; ++i) {scanf("%d",&original[i]); ordenado[i] = original[i]; }qsort(ordenado, M,sizeof(int), comp); resposta =0;for (int i =0; i < M; ++i) {if (original[i] == ordenado[i])++resposta; }printf("%d\n", resposta); }return0;}
#include<algorithm>#include<iostream>#include<vector>usingnamespace std;intmain(){int N, M, P, resposta; vector<int> original, ordenado; cin >> N;for (int k =0; k < N; ++k) { cin >> M;original.assign(M,0);for (int i =0; i < M; ++i) { cin >>original[i]; } ordenado = original;sort(ordenado.begin(),ordenado.end(),greater<int>()); resposta =0;for (int i =0; i < M; ++i) {if (original[i] ==ordenado[i])++resposta; } cout << resposta << endl; }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.trim().split('\n');constcomp= (a, b) => {return b - a;};letN=parseInt(lines.shift().trim());while(lines.length){letM=parseInt(lines.shift().trim());let original =lines.shift().trim().split(' ').map((x) =>parseInt(x));let ordenado = [...original];ordenado.sort(comp);let resposta =original.reduce((acc, cur, i) => original[i] === ordenado[i] ? acc +1: acc,0);console.log(resposta);}
N =int(input())for _ inrange(N): M =int(input()) original = [int(x)for x ininput().split(' ')] ordenado =sorted(original, reverse=True) resposta =0for i inrange(M):if(original[i]== ordenado[i]): resposta +=1print(resposta)