Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

呀!我的代码和你一样!

Posted by yc5_yc at 2012-08-06 10:38:17 on Problem 1055
In Reply To:所谓的题解(鉴于此题代码贫瘠,所以提供AC代码) Posted by:BAD_GUY at 2012-08-06 10:34:49
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
struct output {int ZIP;int cnt,bun;}O[100000];
char a[10],vil[100000][10];
bool M[100000];
int Tv,To,Tl,Tb,cnt[100000];
bool cmp(output a,output b) {
    return a.ZIP<b.ZIP;
}
int main()
{
    while(scanf("%s",a)!=EOF) {
        if(a[0]=='?') break;
        bool flag=1;
        for(int i=0;i<strlen(a);i++)
            if(!(a[i]>='0' && a[i]<='9')) flag=0;
        bool flag2=0;
        for(int i=0;i<strlen(a);i++) if(a[i]!='0') flag2=1;
        if(strlen(a)!=5 || !flag || !flag2) {
            for(int i=0;i<strlen(a);i++) vil[Tv][i]=a[i];
            Tv++;
            continue;
        }
        int num=0;
        for(int i=0;i<strlen(a);i++) num=num*10+a[i]-'0';
        cnt[num]++;
    }
    //puts("sdfsdf");
    for(int i=10000;i<=99999;i++) if(cnt[i]>=10){
        int tmp=i;
        O[To].ZIP=i,O[To].cnt=cnt[i];
        Tl+=cnt[i];
        tmp=0;
        while(cnt[i]>0) {
            cnt[i]-=15;
            tmp++;
        }
        O[To].bun=tmp;
        Tb+=tmp;
        To++;
        cnt[i]=0;
    }
    sort(O,O+To,cmp);
    puts("ZIP         LETTERS     BUNDLES\n");
    for(int i=0;i<To;i++)
        printf("%d%12d%12d\n",O[i].ZIP,O[i].cnt,O[i].bun);
    puts("");
    To=0;
    for(int i=100;i<=999;i++) {
        int cnt1=0;
        for(int j=0;j<=99;j++) cnt1+=cnt[i*100+j];
        if(cnt1>=10) {
            for(int j=0;j<=99;j++) cnt[i*100+j]=0;
            int tmp=i;
            O[To].ZIP=i,O[To].cnt=cnt1;
            Tl+=cnt1;
            tmp=0;
            while(cnt1>0) {
                cnt1-=15;
                tmp++;
            }
            O[To].bun=tmp;
            Tb+=tmp;
            To++;
        }
    }
    sort(O,O+To,cmp);
    for(int i=0;i<To;i++)
        printf("%dxx%12d%12d\n",O[i].ZIP,O[i].cnt,O[i].bun);
    puts("");
    To=0;
    for(int i=10000;i<=99999;i++) if(cnt[i]>0){
        int tmp=i;
        O[To].ZIP=i,O[To].cnt=cnt[i];
        Tl+=cnt[i];
        O[To].bun=0;
        To++;
        cnt[i]=0;
    }
    sort(O,O+To,cmp);
    for(int i=0;i<To;i++)
        printf("%d%12d%12d\n",O[i].ZIP,O[i].cnt,O[i].bun);
    puts("");
    printf("TOTALS%11d%12d\n\n",Tl,Tb);
    puts("INVALID ZIP CODES\n");
    for(int i=0;i<Tv-1;i++) if(!M[i])
        for(int j=i+1;j<Tv;j++) if(strcmp(vil[j],vil[i])==0)
            M[j]=1;
    for(int i=0;i<Tv;i++) if(M[i]==0)
        printf("%s\n",vil[i]);
    getchar();getchar();
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator