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

Обсуждение задачи 1028. Звёзды

wrong answer
Послано CS03 31 июл 2012 04:30
why my program give wrong answer?

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include <sstream>
using namespace std;
struct RPair
{
    int x;
    int y;
};
int main()
{
    int N;
    while(cin>>N)
    {
       int p1,p2;
       RPair P;
       vector<int> x_hold;
       vector<int> y_hold;
       vector<RPair> P_hold;
          string  stringx_hold;
           string stringy_hold;
       vector<int> level;
       level.resize(N);
       ostringstream convert;
       string result;
        for(int i=0;i<N;i++)
        {
            cin>>p1>>p2;
              x_hold.push_back(p1);
              y_hold.push_back(p2);
              P.x=p1;P.y=p2;
              P_hold.push_back(P);
              convert<<p1;
              result=convert.str();
              stringx_hold+=result[result.size()-1];
             convert<<p2;
              result=convert.str();
              stringy_hold+=result[result.size()-1];
        }
    sort(x_hold.begin(),x_hold.end());
    sort(y_hold.begin(),y_hold.end());
    sort(stringx_hold.begin(),stringx_hold.end());
    sort(stringy_hold.begin(),stringy_hold.end());
    for(int i=0;i<P_hold.size();i++)
    {
        RPair temp;
        for(int j=0;j<P_hold.size();j++)
        {
            if(P_hold[i].x<P_hold[j].x)
            {
               temp=P_hold[i];
               P_hold[i]=P_hold[j];
               P_hold[j]=temp;
            }
            if(P_hold[i].x==P_hold[j].x&&P_hold[i].y<P_hold[j].y)
            {
               temp=P_hold[i];
               P_hold[i]=P_hold[j];
               P_hold[j]=temp;
            }
        }
    }
    size_t found;
    int t=0;
    for(int i=0;i<x_hold.size();i++)
    {
        t=i;
        if(i!=x_hold.size()-1)
        {
            while(P_hold[t].x==P_hold[t+1].x&&P_hold[t].y==P_hold[t+1].y)
            {
                t++;
              if(t==x_hold.size()-1)
                  break;
            }
        }
        if(i==t)
        {
        convert<<P_hold[t].y;
        result=convert.str();
        found=stringy_hold.find(result[result.size()-1]);
        level[min((int)found,t)]++;
        //stringy_hold.insert((int)found,"n");
        stringy_hold.replace((int)found,1,"n");
        }
        else
        {
     int hold=  level[t]++;
        //stringy_hold.insert((int)found,"n");
        stringy_hold.replace(t,1,"n");
        for(int j=i;j<t;j++)
        {
            level[t]++;
             stringy_hold.replace(j,1,"n");
        }
        }
        i=t;
    }
     for(int i=0;i<level.size();i++)
         cout<<level[i]<<"\n";
     }
}