【題解】Codeforces 1301D. Time to Run

【題目敘述】http://codeforces.com/contest/1301/problem/D

#include <iostream>
#include <vector>
using namespace std;
 
int n, m, k, cnt;
vector <pair<int, string> > v;
 
int main() {
    cin >> n >> m >> k;
    if (k > 4*n*m - n*2 - m*2){
        cout << "NO\n";
        return 0;
    }
    for (int i = 0; i < n; i++){
        cnt = min(k, m-1);
        if (cnt > 0) v.push_back({cnt, "R"});
        k -= cnt;
        if (k == 0) break;
        if (i == n-1) break;
        cnt = min(k, m-1);
        if (cnt > 0) v.push_back({cnt, "L"});
        k -= cnt;
        if (k == 0) break;
        v.push_back({1, "D"});
        k--;
    }
    for (int i = 0; i < m; i++){
        cnt = min(k, n-1);
        if (cnt > 0) v.push_back({cnt, "U"});
        k -= cnt;
        if (k == 0) break;
        cnt = min(k, n-1);
        if (cnt > 0) v.push_back({cnt, "D"});
        k -= cnt;
        if (k == 0) break;
        v.push_back({1, "L"});
        k--;
    }
    cout << "YES\n";
    cout << v.size() << "\n";
    for (auto i:v){
        cout << i.first << " " << i.second << "\n";
    }
}
分享本文 Share with friends