Основное
 
 
Отправитель Задача Язык Вердикт Время Память Отослано Протест.  
94260114 Дорешивание:
kartikeyasri23
605B - 39 GNU C++11 Полное решение 202 мс 1956 КБ 2020-09-30 07:42:53 2020-09-30 07:42:53
→ Исходный код
#include <bits/stdc++.h>
using namespace std;
vector <int> inc(100005);
bool comp(const pair<int,int> &a,const pair<int,int> &b)
{
    if(a.first!=b.first)
    return a.first<b.first;
    else 
    return inc[a.second]>inc[b.second];
}
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,m;
    cin>>n>>m;
    vector <pair<int,int>> edge(m+1);
    for(int i=1;i<=m;i++)
    {
        int a,b;
        cin>>a>>b;
        inc[i]=b;
        edge[i]={a,i};
    }
    sort(edge.begin()+1,edge.end(),comp);
    int from=2,to=3,last=1;
    vector <pair<int,int>> ans(m+1);
    bool flag=true;
    for(int i=1;i<=m && flag;i++)
    {
        int val=inc[edge[i].second];
        if(val)
        {
            last++;
            ans[edge[i].second]={1,last};
        }
        else
        {
            if(from==to)
            {
                from=2;
                to++;
            }
            if(to>last)
            flag=false;
            else
            {
                ans[edge[i].second]={from,to};
                from++;
            }
        }
    }
    if(flag)
    {
        for(int i=1;i<=m;i++)
        cout<<ans[i].first<<" "<<ans[i].second<<"\n";
    }
    else
    cout<<-1;
    return 0;
}
?
Время: ? ms, память: ? КБ
Вердикт: ?
Ввод
?
Вывод участника
?
Ответ жюри
?
Комментарий чекера
?
Диагностика
?
Показать детали тестирования