답안 #1113238

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1113238 2024-11-16T07:29:28 Z ljtunas Topical (NOI23_topical) C++14
100 / 100
637 ms 226304 KB
// author : anhtun_hi , nqg
#include <bits/stdc++.h>
#define ll long long
#define ii pair<ll, ll>
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define reset(h, v)    memset(h, v, sizeof h)
#define Forv(i, a)     for(auto& i : a)
#define For(i, a, b)   for(int i = a; i <= b; ++i)
#define Ford(i, a, b)  for(int i = a; i >= b; --i)
#define c_bit(i)     __builtin_popcountll(i)
#define Bit(mask, i)    ((mask >> i) & 1LL)
#define onbit(mask, i)  ((mask) bitor (1LL << i))
#define offbit(mask, i) ((mask) &~ (1LL << i))
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
using namespace std;
namespace std {
    template <typename T, int D>
    struct _vector : public vector <_vector <T, D - 1>> {
        static_assert(D >= 1, "Dimension must be positive!");
        template <typename... Args>
        _vector(int n = 0, Args... args) : vector <_vector <T, D - 1>> (n, _vector <T, D - 1> (args...)) {}
    };
    template <typename T> struct _vector <T, 1> : public vector <T> {
        _vector(int n = 0, const T& val = T()) : vector <T> (n, val) {}
    };
    template <class A, class B> bool minimize(A &a, B b){return a > b ? a = b, true : false;}
    template <class A, class B> bool maximize(A &a, B b){return a < b ? a = b, true : false;}
}
const int dx[] = {0, 0, +1, -1}, dy[] = {-1, +1, 0, 0}, LOG = 20, base = 311, inf = 1e9 + 5;
const int MAXN = 1e6 + 5;
const  ll  mod = 1e9 + 7;
const  ll   oo = 1e18;

#define int long long

int n, k;
vector<vector<ll>> r, u;

namespace sub1{
    bool check(){ return n == 1; }
    void Solve(){
        int ans = 1;
        For(i, 1, k) if(r[1][i] > 0) ans &= 0;
        cout << (ans == 1) ? 1 : 0 << '\n';
    }
}

namespace sub2{
    bool check() { return n <= 100 && k <= 100; }
    bool del[MAXN];
    void Solve(){
        vector<ll> rate(k + 1);
        int ans = 0;
        while (true){
            bool on = false;
            For(i, 1, n) if(!del[i]){
                bool ok = true;
                For(j, 1, k) ok &= (rate[j] >= r[i][j]);
                if(ok) {
                    ++ans;
                    For(j, 1, k) rate[j] += u[i][j];
                    on = true;
                    del[i] = true;
                }
            }
            if (!on) break;
        }
        cout << ans << '\n';
    }
}

namespace sub3{
    bool check() {return k == 1;}
    ii a[MAXN];
    void Solve(){
         For(i, 1, n) a[i] = {r[i][1], u[i][1]};
         sort(a + 1, a + n + 1);
         int ans = 0; ll sum = 0;
         For(i, 1, n) {
            if (sum >= a[i].fi) ++ ans, sum += a[i].se;
            else break;
         }
         cout << ans << '\n';
    }
}

namespace sub4{
    vector<ii> vec[MAXN];
    ll s[MAXN];int cnt[MAXN], id[MAXN];
    void Solve(){
        For(i, 1, n) For(j, 1, k){
            vec[j].push_back({r[i][j], i});
        }
        For(i, 1, k) sort(all(vec[i]));
        int ans = 0;
        For(i, 1, k) id[i] = 1;
        while (ans < n){
            vector<int> List;
            For(i, 1, k){
                while(id[i] <= n && s[i] >= vec[i][id[i] - 1].fi){
                    ++cnt[vec[i][id[i] - 1].se];
                    if(cnt[vec[i][id[i] - 1].se] == k) List.push_back(vec[i][id[i] - 1].se);
                    ++id[i];
                }
            }
            if (List.empty()) break;
            Forv(i, List) {
                ++ans;
                For(j, 1, k) s[j] += u[i][j];
            }
        }
        cout << ans << '\n';
    }
}

void Solve() {
    cin >> n >> k;
    r.resize(n + 5, vector<ll>(k + 5));
    u.resize(n + 5, vector<ll>(k + 5));
    For(i, 1, n) For(j, 1, k) cin >> r[i][j];
    For(i, 1, n) For(j, 1, k) cin >> u[i][j];
     sub4::Solve();
}

signed main() {
    cin.tie(0) -> sync_with_stdio(0);
    if(fopen("NOI23_topical.inp", "r")) {
        freopen("NOI23_topical.inp", "r", stdin);
        freopen("NOI23_topical.out", "w", stdout);
    }

    int t = 1;
//    cin >> t;
    while(t --) Solve();

    return 0;
}


Compilation message

Main.cpp: In function 'void sub1::Solve()':
Main.cpp:46:43: warning: second operand of conditional expression has no effect [-Wunused-value]
   46 |         cout << (ans == 1) ? 1 : 0 << '\n';
      |                                           ^
Main.cpp:46:36: warning: third operand of conditional expression has no effect [-Wunused-value]
   46 |         cout << (ans == 1) ? 1 : 0 << '\n';
      |                                  ~~^~~~~~~
Main.cpp: In function 'int main()':
Main.cpp:130:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  130 |         freopen("NOI23_topical.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:131:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  131 |         freopen("NOI23_topical.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 23888 KB Output is correct
2 Correct 17 ms 23900 KB Output is correct
3 Correct 20 ms 25168 KB Output is correct
4 Correct 258 ms 164644 KB Output is correct
5 Correct 278 ms 164772 KB Output is correct
6 Correct 264 ms 164756 KB Output is correct
7 Correct 250 ms 159920 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 24056 KB Output is correct
2 Correct 18 ms 23888 KB Output is correct
3 Correct 18 ms 23888 KB Output is correct
4 Correct 17 ms 23888 KB Output is correct
5 Correct 17 ms 23888 KB Output is correct
6 Correct 16 ms 23900 KB Output is correct
7 Correct 20 ms 24400 KB Output is correct
8 Correct 20 ms 24312 KB Output is correct
9 Correct 19 ms 24400 KB Output is correct
10 Correct 19 ms 24144 KB Output is correct
11 Correct 19 ms 24144 KB Output is correct
12 Correct 20 ms 24296 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 18 ms 23888 KB Output is correct
2 Correct 16 ms 23888 KB Output is correct
3 Correct 20 ms 26060 KB Output is correct
4 Correct 56 ms 43652 KB Output is correct
5 Correct 66 ms 43448 KB Output is correct
6 Correct 433 ms 226196 KB Output is correct
7 Correct 626 ms 223724 KB Output is correct
8 Correct 466 ms 226304 KB Output is correct
9 Correct 637 ms 219788 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 23888 KB Output is correct
2 Correct 17 ms 23900 KB Output is correct
3 Correct 20 ms 25168 KB Output is correct
4 Correct 258 ms 164644 KB Output is correct
5 Correct 278 ms 164772 KB Output is correct
6 Correct 264 ms 164756 KB Output is correct
7 Correct 250 ms 159920 KB Output is correct
8 Correct 17 ms 24056 KB Output is correct
9 Correct 18 ms 23888 KB Output is correct
10 Correct 18 ms 23888 KB Output is correct
11 Correct 17 ms 23888 KB Output is correct
12 Correct 17 ms 23888 KB Output is correct
13 Correct 16 ms 23900 KB Output is correct
14 Correct 20 ms 24400 KB Output is correct
15 Correct 20 ms 24312 KB Output is correct
16 Correct 19 ms 24400 KB Output is correct
17 Correct 19 ms 24144 KB Output is correct
18 Correct 19 ms 24144 KB Output is correct
19 Correct 20 ms 24296 KB Output is correct
20 Correct 18 ms 23888 KB Output is correct
21 Correct 16 ms 23888 KB Output is correct
22 Correct 20 ms 26060 KB Output is correct
23 Correct 56 ms 43652 KB Output is correct
24 Correct 66 ms 43448 KB Output is correct
25 Correct 433 ms 226196 KB Output is correct
26 Correct 626 ms 223724 KB Output is correct
27 Correct 466 ms 226304 KB Output is correct
28 Correct 637 ms 219788 KB Output is correct
29 Correct 243 ms 60704 KB Output is correct
30 Correct 238 ms 73032 KB Output is correct
31 Correct 316 ms 85640 KB Output is correct
32 Correct 216 ms 69448 KB Output is correct
33 Correct 213 ms 65804 KB Output is correct
34 Correct 238 ms 69760 KB Output is correct
35 Correct 259 ms 81888 KB Output is correct
36 Correct 217 ms 72660 KB Output is correct
37 Correct 253 ms 75664 KB Output is correct
38 Correct 187 ms 74412 KB Output is correct