Pagini recente » Cod sursa (job #16770) | Cod sursa (job #216763) | Cod sursa (job #2342460) | Cod sursa (job #2342594) | Cod sursa (job #3225017)
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
///----------TOGGLES
#define FIO
//#define TESTS
///---------
#define int uint32_t
#ifdef FIO
const string fname="psir";
ifstream in(fname+".in");
ofstream out(fname+".out");
#define cin in
#define cout out
#endif // FIO
///--------
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
const int maxn = 2005;
int dmic[maxn][maxn];
int v[maxn];
int n;
void solve()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>v[i];
int maxval=0;
{
map<int,int> nor;
for(int i=1;i<=n;i++) nor[v[i]]=0;
for(auto &e:nor)
{
e.second=++maxval;
}
for(int i=1;i<=n;i++) v[i]=nor[v[i]];
}
int ans=0;
for(int i=1;i<=n;i++)
{
//dmic[i][0]=1;
for(int j=i-1;j>=1;j--)
{
if(v[j]>v[i]) dmic[i][v[j]]+=dmic[j][v[i]-1]+1;
else if(v[j]<v[i]) dmic[i][v[j]]+=dmic[j][maxval] - dmic[j][v[i]]+1;
else ans=ans+1;
}
for(int j=1;j<=maxval;j++)
{
dmic[i][j]=(dmic[i][j]+dmic[i][j-1]);
}
ans=(ans+dmic[i][maxval]);
}
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=maxval;j++)
{
cout<<dmic[i][j]<<' ';
}
cout<<'\n';
}*/
cout<<ans<<'\n';
}
///---MAIN FUNC-------
int32_t main()
{
IOS;
solve();
return 0;
}