赞
踩
#include <bits/stdc++.h> using namespace std; const int N=1e5+10; double x[N],y[N]; int p[N]; struct node{ int x,y,v; }; bool cmp(node a,node b) { if(a.x!=b.x) return a.x<b.x; return a.y<b.y; } map<double,vector<node> >mp; int main() { int n; cin>>n; int num=0; int sum=0; for(int i=0;i<n;i++) { int x,y,p; cin>>x>>y>>p; sum+=p; mp[y*1.0/x].push_back({x,y,p});// 在斜率相同的条件下,存进该vector容器里。 } for(int auto x:mp) { vector<node> ve=x.second;//将mp中第二个位置,也就是vector里的数据 拿到ve这个新建的容器中 sort(ve.begin(),ve.end(),cmp);//将该容器里面的数进行从小到大排序 for(int i=0;i<ve.size();i++) { if(i==0||ve[i].v!=1||ve[i-1].v!=1) num++; } } cout<<sum<<" "<<num<<endl; return 0; }
//关于map vector 的stl 第一次知道这种用法,长知识了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。