标签:
Description
Your task is counting the segments of different colors you can see at last.
Input
Each of the following n lines consists of exactly 3 nonnegative integers separated by single spaces:
x1 x2 c
x1 and x2 indicate the left endpoint and right endpoint of the segment, c indicates the color of the segment.
All the numbers are in the range [0, 8000], and they are all integers.
Input may contain several data set, process to the end of file.
Output
If some color can‘t be seen, you shouldn‘t print it.
Print a blank line after every dataset.
Sample Input
Sample Output
1 1
0 2
1 1
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<cstdlib> using namespace std; #define N 8001 int n,color[N],cnt[N]; int main() { while(scanf("%d",&n)!=EOF) { int x,y,z,i,j,maxx=0; memset(color,0,sizeof(color)); memset(cnt,0,sizeof(cnt)); for(i=0;i<n;i++) { scanf("%d%d%d",&x,&y,&z); for(j=x;j<y;j++) color[j]=z+1; if(maxx<y) maxx=y; } for(i=0;i<maxx;i++) { while(i!=0&&color[i]&&color[i]==color[i-1]) i++; if(color[i]) cnt[color[i]-1]++; } for(int i=0;i<=N;i++) if(cnt[i]) { printf("%d %d\n",i,cnt[i]); } printf("\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4254704.html