#include<bits/stdc++.h> using namespace std; int per[200010]; int odw[200010]; long long sumy[200010]; int main() { int n, i; scanf("%d", &n); for(i=1;i<=n;i++){ scanf("%d", &per[i]); } for(i=1;i<=n;i++) { queue<pair<long long, int>>kolejka; kolejka.push({0, i}); odw[i] = i; while(kolejka.size()) { long long o=kolejka.front().first; int x = kolejka.front().second; kolejka.pop(); for(int j=1;j<=n;j++){ if(odw[j]!=i && ((x>j && per[j]>per[x])||(j>x && per[x]>per[j]))){ odw[j] = i; sumy[i] += o+1; kolejka.push({o+1, j}); } } } printf("%lld ", sumy[i]); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include<bits/stdc++.h> using namespace std; int per[200010]; int odw[200010]; long long sumy[200010]; int main() { int n, i; scanf("%d", &n); for(i=1;i<=n;i++){ scanf("%d", &per[i]); } for(i=1;i<=n;i++) { queue<pair<long long, int>>kolejka; kolejka.push({0, i}); odw[i] = i; while(kolejka.size()) { long long o=kolejka.front().first; int x = kolejka.front().second; kolejka.pop(); for(int j=1;j<=n;j++){ if(odw[j]!=i && ((x>j && per[j]>per[x])||(j>x && per[x]>per[j]))){ odw[j] = i; sumy[i] += o+1; kolejka.push({o+1, j}); } } } printf("%lld ", sumy[i]); } } |