zoj1610-Count the Colors

来源:互联网 发布:简约软件下载 编辑:程序博客网 时间:2024/05/17 12:46

先来看下有问题的代码,不知道为什么老是wa,跟我下面重写ac的代码对比我实在找不出有什么不同.怎么也不会是因为map的问题.只有是输入数据问题,我也试了很多刁钻的数据,但是还是找不出哪里不同= =

#include<iostream>#include<map>using namespace std;int arr[8001];int main(){int num;map<int,int> maps;while(cin>>num){maps.clear();for(int i=0;i<8001;i++)arr[i]=-1;int l,r,col,maxr=0,minl=8002;while(num--){cin>>l>>r>>col;if(l==r)continue;if(r>maxr)maxr=r;if(minl>l)minl=l;for(int i=l;i<r;i++)arr[i]=col;}int temp=8002;if(minl!=8002){temp=arr[minl];maps[temp]++;}for(int i=minl;i<maxr;i++){if(arr[i]>=0)if(arr[i]!=temp){maps[arr[i]]++;temp=arr[i];}}map<int,int>::iterator it;for(it=maps.begin();it!=maps.end();++it)cout<<(*it).first<<' '<<(*it).second<<endl;cout<<endl;}return 0;}


 

 

再来重写ac的代码

#include<iostream>#include<cstring>using namespace std;int arr[8001],cnum[8001];int main(){int num;while(cin>>num){memset(arr,0,sizeof(arr));memset(cnum,0,sizeof(cnum));int l,r,col,maxr=0;while(num--){cin>>l>>r>>col;if(l==r)continue;if(r>maxr)maxr=r;for(int i=l;i<r;i++)arr[i]=col+1;}for(int i=0;i<maxr;i++){while(i!=0&&arr[i]&&arr[i]==arr[i-1])i++;if(arr[i])cnum[arr[i]-1]++;}for(int i=0;i<8001;i++)if(cnum[i])cout<<i<<' '<<cnum[i]<<endl;cout<<endl;}return 0;}