PAT A1002 A+B for Polynomials (25分)

尝试使用set记录幂次,实际边界问题较多,下次谨慎使用,
set不太适用递减输出!!
最后一个点输出错误,这是因为得到的最后结果为0,需要只输出一个0(后面没有空格)。

#include<cstdio>
#include<set>
#include<string.h>
using namespace std;
const int N = 1010;
set<int> isvis;
double P[N];

int main(){   
    int n;
    int x;
    double a;
    memset(P,0,sizeof(P));
    scanf("%d",&n);
    for(int i = 0;i<n;i++){
        scanf("%d %lf",&x,&a);
        isvis.insert(x);
        P[x] += a;
    }
    scanf("%d",&n);
    for(int i = 0;i<n;i++){
        scanf("%d %lf",&x,&a);
        isvis.insert(x);
        P[x] += a;
    }
    for(set<int>::iterator it = isvis.begin();it!=isvis.end();it++){
        if(P[*it]==0) isvis.erase(it);
 
    }
    int count = 0;
    if(isvis.size()==0) printf("0");
    else{
       
        printf("%d ",isvis.size());
        for(set<int>::iterator it = isvis.end();it!=isvis.begin();){
            it--;
            printf("%d %.1f",*it,P[*it]);
            count++;
            if(count!=isvis.size())printf(" "); 
        }
    }

    return 0;
}
posted @ 2020-09-02 00:48  是水泵呢  阅读(71)  评论(0编辑  收藏  举报