标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 21769 | Accepted: 5885 |
Description
Input
Output
Sample Input
1 3 4 4 1 4 2 3 3 2 3 1
Sample Output
Test case 1: 5
排个序,转化成逆序数
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; #define N 2010 int tt,n,m,k,c[N]; struct node { int x,y,pos; }e[N*N]; bool cmp(node a,node b) { if(a.x!=b.x) return a.x<b.x; return a.y<b.y; }; int lowbit(int x) { return x&(-x); } void update(int pos,int m) { while(pos<N) { c[pos]+=m; pos+=lowbit(pos); } } int sum(int x) { int sum=0; while(x>0) { sum+=c[x]; x-=lowbit(x); } return sum; } int main() { int cas=1; scanf("%d",&tt); while(tt--) { long long ans=0; memset(c,0,sizeof(c)); scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=k;i++) scanf("%d%d",&e[i].x,&e[i].y); sort(e+1,e+1+k,cmp); for(int i=1;i<=k;i++) { update(e[i].y,1); ans+=i-sum(e[i].y); } printf("Test case %d: %I64d\n",cas,ans); cas++; } return 0; }
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4256726.html