?
№ | Отправитель | Задача | Язык | Вердикт | Время | Память | Отослано | Протест. | |
---|---|---|---|---|---|---|---|---|---|
130623552 |
Дорешивание: VishalGaurav |
1579D - 35 | C++17 (GCC 7-32) | Неправильный ответ на тесте 2 | 15 мс | 3640 КБ | 2021-10-03 10:11:48 | 2021-10-03 10:11:48 |
#include <iostream> #include <algorithm> #include <vector> #include <queue> #include <map> #include <set> #define mod 1000000007 using namespace std; typedef long long ll; int main (){ int t;cin>>t; while(t--){ vector<pair<ll,ll>> v; priority_queue<pair<ll,ll>> pq; ll n;cin>>n; for(int i=0;i<n;i++){ ll temp;cin>>temp; if(temp == 0) continue; pq.push({temp,i+1}); } ll ct=0; while(pq.size()>1){ auto a = pq.top(); pq.pop(); auto b = pq.top(); pq.pop(); if(a.first == b.first){ ct+=a.first; for(int i=0;i<a.first;i++){ v.push_back({a.second,b.second}); } }else{ ll temp = b.first; ct+=temp; pq.push({a.first-b.first,a.second}); for(int i=0;i<temp;i++){ v.push_back({a.second,b.second}); } } } cout<<ct<<"\n"; for(int i=0;i<v.size();i++){ cout<<v[i].first<<" "<<v[i].second<<"\n"; } } }
?
?
?
?