题意:
有n件T恤,每件含有三个属性价格v,正面颜色f和反面颜色b。
现有m个顾客,每个顾客有要买最喜欢的颜色中最便宜的一件。
用set对所有衣服储存并排序,卖出一件就将这件删除。
附AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N=2e5+10; 5 6 struct node{ 7 int v,f,b; 8 }a[N]; 9 10 set<int> s[5]; 11 12 int main(){ 13 int n,m; 14 cin>>n; 15 for(int i=1;i<=n;i++){ 16 cin>>a[i].v; 17 } 18 for(int i=1;i<=n;i++){ 19 cin>>a[i].f; 20 } 21 for(int i=1;i<=n;i++){ 22 cin>>a[i].b; 23 } 24 for(int i=1;i<=n;i++){ 25 s[a[i].f].insert(a[i].v); 26 s[a[i].b].insert(a[i].v); 27 } 28 cin>>m; 29 for(int i=1;i<=m;i++){ 30 int x; 31 cin>>x; 32 if(s[x].size()==0){ 33 cout<<"-1"<<" "; 34 continue; 35 } 36 else{ 37 int temp=*(s[x].begin()); 38 cout<<temp<<" "; 39 for(int j=1;j<=3;j++){ 40 s[j].erase(temp); 41 } 42 } 43 } 44 return 0; 45 }