Pagini recente » Cod sursa (job #170984) | Cod sursa (job #1894949) | Cod sursa (job #2389581) | Cod sursa (job #2893017) | Cod sursa (job #2950646)
#include <bits/stdc++.h>
using namespace std;
int BS (int possible[], int k, int val)
{
int st = 1, dr = k, p = 0;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (possible[mij] >= val)
dr = mij - 1;
else
{
p = mij;
st = mij + 1;
}
}
return p;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while(t--)
{
int n;
cin >> n;
int a[n + 5];
for(int i = 1; i <= n; i++)
cin >> a[i];
long long ans = 0;
int possible[n + 5], k = 0;
for (int i = 1; i <= n; i++)
if (a[i] < i)
{
ans += 1LL * BS(possible, k, a[i]);
possible[++k] = i;
}
cout << ans << "\n";
}
return 0;
}