Pagini recente » Cod sursa (job #1261487) | Cod sursa (job #1099758) | Cod sursa (job #951480) | Cod sursa (job #599754) | Cod sursa (job #2916042)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int m;
struct elem{
int numar;
int poz;
}V[200005];
int S[200005];
vector <int>G[200005];
vector <int>P;
int cmp(elem a,elem b)
{
if(a.numar<b.numar)
return 1;
return 0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>V[i].numar;
V[i].poz=i;
}
sort(V+1,V+n+1,cmp);
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
P.push_back(V[1].poz);
for(int i=2;i<=n;i++)
{
int cnt=i-1;
int nr=V[i].numar;
for(int j=0;j<P.size() && cnt>0;j++)
{
int N=P[j];
int gasit=0;
for(int k=0;k<G[nr].size() && !gasit;k++)
{
int vecin=G[nr][k];
if(N==vecin)
{
gasit=1;
continue;
}
}
if(gasit)
cnt--;
}
P.push_back(V[i].poz);
S[V[i].poz]=cnt;
}
for(int i=1;i<=n;i++)
cout<<S[i]<<" ";
return 0;
}