//Komasz Tasperowicz
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>
#define MP make_pair
#define FI first
#define SE second
using namespace std;
const int over9000 = 1e9+3;
int main()
{
int n;
scanf("%d", &n);
long long int w = 0LL;
vector <vector <int> > t(n);
vector <vector <bool> > b(n);
vector <pair <int, pair <int, int> > > a;
int q;
for (int i=0; i<n; ++i)
{
for (int j=0; j<n-i; ++j)
{
scanf("%d", &q);
t[i].push_back(q);
}
}
multiset <pair <int, pair <int, int> > > m;
for (int i=n-1; i>=0; --i)
{
for (int j=i; j>=0; --j)
{
m.insert(MP(t[j][i-j], MP(j, i-j)));
}
for (int j=i+1; j<n; ++j)
{
for (int k=0; k<t[j].size(); ++k)
{
m.erase(MP(t[j][k], MP(j, k)));
}
}
w += (*m.begin()).FI;
m.erase(m.begin());
}
printf("%lld\n", w);
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | //Komasz Tasperowicz #include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <set> #define MP make_pair #define FI first #define SE second using namespace std; const int over9000 = 1e9+3; int main() { int n; scanf("%d", &n); long long int w = 0LL; vector <vector <int> > t(n); vector <vector <bool> > b(n); vector <pair <int, pair <int, int> > > a; int q; for (int i=0; i<n; ++i) { for (int j=0; j<n-i; ++j) { scanf("%d", &q); t[i].push_back(q); } } multiset <pair <int, pair <int, int> > > m; for (int i=n-1; i>=0; --i) { for (int j=i; j>=0; --j) { m.insert(MP(t[j][i-j], MP(j, i-j))); } for (int j=i+1; j<n; ++j) { for (int k=0; k<t[j].size(); ++k) { m.erase(MP(t[j][k], MP(j, k))); } } w += (*m.begin()).FI; m.erase(m.begin()); } printf("%lld\n", w); return 0; } |
English