main.cpp.zip

  • charon_
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-04-25 14:41
    上传日期
给定一个n*m(1<=n*m<=1e6)的矩形。你被要求对矩形执行q次操作,每次操作的指令格式均为(op,x,y); 当op==0时,你要交换第x行和第y行。 当op==1时,你要交换第x列和第y列。 第一行包含一个数字T,表示数据组数。 对于每组数据,第一行包含三个整数n,m,q(1<=n*m<=1e6,0<q<=1e5)。 接下来n行,每行包含m个整数,每个数字大小为 [-1e9,1e9],表示矩阵元素。 最后q行,每行三个整数op,x,y,保证数据合法。 对于每组数据,输出完成所有操作后的结果矩形。 每组数据之间空一行。
main.cpp.zip
  • main.cpp
    1.4KB
内容介绍
#include <iostream> #include <iostream> #include <vector> #include <map> #include <string> #include <algorithm rel='nofollow' onclick='return false;'> #include <sstream> #include <stdio.h> #include <stdlib.h> //using namespace std; typedef struct { int num; float money; int refer; int rank; }ID; bool cmp(ID p1, ID p2) { if (p1.money != p2.money) { return p1.money > p2.money; } if (p1.refer != p2.refer) { return p1.refer > p2.refer; } if (p1.num < p2.num) { return true; } return false; } int main(int argc, const char * argv[]) { int N=0; scanf("%d",&N); ID member[10010]; for (int i=0; i<N; i++) { member[i].num=i+1; member[i].refer=0; member[i].rank=i+1; } // int num1=0; int K=0; int num=0,mo=0; int sum=0; int g[10010][2]; for (int i=0; i<N; i++) { // scanf("%d",&num1); sum=0; scanf("%d",&K); for (int j=0; j<K; j++) { scanf("%d %d",&num,&mo); sum+=mo; member[num-1].money+=mo; member[num-1].refer++; } member[i].money-=(float)sum; } for (int i=0; i<N; i++) { member[i].money/=100.0; } for (int i=0; i<N; i++) { g[i][0]=i+1; g[i][1]=member[i].money; } //重点是排序。 std::sort(g+1, g+1 + N, cmp);//对这些人进行排序 return 0; }
评论
    相关推荐