ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1007. Кодовые слова

Why Output Limit? Or WA#1?
Послано ilya_romanenko 19 июл 2011 17:03
I know,that put all program is bad,but i can't find and understand my mistake!
Output limit#1:
#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
using namespace std;
int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    string m,m2,m3="0",m4="1";
    char c;
    int a,b,d,i,m1[100],h,length,kk=0;
    cin>>a;
    const int s=a+1;
l1:while(cin.get(c)){
    kk++;
    if(kk==0)goto l2;
    cin.get(c);
    while(c==10){
        cout<<c;
        cin.get(c);
    }
    cin.putback(c);
    l2:    cin>>m;
        length=m.length();
        b=0;
        d=0;
        for(i=0;i<length;i++)
            if(m[i]=='1'){
                m1[b]=i;
                b++;
                d=d+1+i;
            }
        if(length==a)
        for(i=0;i<b;i++)
            if((d-m1[i]-1)%s==0){
                m[m1[i]]='0';
                cout<<m<<endl;
                goto l1;
            }
        h=0;
        if(length<a){
        if((d+length+1)%s==0){
            cout<<m<<'1'<<endl;
            goto l1;
        }
        else if(d%s==0){
            cout<<m<<'0'<<endl;
            goto l1;
        }
        else for(i=0;i<length;i++){
            if((d+(b-h))%s==0){
                m.insert(i,m3);
                cout<<m<<endl;
                goto l1;
            }
            else if((d+(b-h)+1+i)%s==0){
                m.insert(i,m4);
                cout<<m<<endl;
                goto l1;
            }
        if(m[i]=='1')h++;
        }
        }
        h=0;
        if(length>a)
        for(i=0;i<length;i++){
            if(m[i]=='1'){
                h++;
            if((d-i-(b-h)-1)%s==0){
                m.erase(i,1);
                cout<<m<<endl;
                goto l1;
            }
            }
            else if((d-(b-h))%s==0){
                m.erase(i,1);
                cout<<m<<endl;
                goto l1;
            }
        }
        cout<<m<<endl;
       }
    return 0;
}
But without cin.get(c);
    while(c==10){
        cout<<c;
        cin.get(c);
    }
    cin.putback(c);
i have WA#1!
WHY????
P.S. Sorry for bad English.