Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<vector>
- #include<algorithm>
- using namespace std;
- int n,m,ar[9],vred[10],minn=-1,res[10];
- vector<int> prio[9];
- void calc()
- {
- int sum=0,i;
- for(i=0;i<n;i++) sum+=vred[ar[i]]*(i+1);
- if(minn==-1 || sum<minn) {
- minn=sum;
- for(i=0;i<n;i++) res[i]=ar[i];
- }
- }
- void check()
- {
- int i,k,j,l,b=0;
- for(i=0;i<n;i++)
- {
- if(prio[ar[i]].size()<=i){
- int cc=0;
- for(k=0;k<i;k++){
- for(j=0;j<prio[ar[i]].size();j++)
- {
- if(prio[ar[i]][j]==ar[k]) cc++;
- }
- }
- if(cc>=prio[ar[i]].size()) b++;
- }
- }
- if(b==n) calc();
- }
- int main()
- {
- int i,j,r,rr;
- cin>>n;
- for(i=1;i<=n;i++) {cin>>vred[i]; ar[i-1]=i;}
- cin>>m;
- for(i=0;i<m;i++)
- {
- cin>>r>>rr;
- prio[r].push_back(rr);
- }
- check();
- while(next_permutation(ar,ar+n))
- {
- check();
- }
- cout<<res[0];
- for(i=1;i<n;i++) cout<<" "<<res[i];
- cout<<endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment