//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; } |