いろいろがんばりたいブログ

情報科学科の人がいろいろ書きます。

Codeforces 155 div2

二日連続。
A問題解いてたら宅配便きて、ほげほげだった。
なんか昨日Cまで解けたから今日も解けたらいいなぁと思ってたら解けなかった。
しょんぼり。

結果は1527 -> 1596 (+69)

A. Cards with Numbers
なんか同じ数字のペアを数えるだけ。
問題を読み違えてしにかけた。

#include <iostream>
#include <fstream>
#include <iomanip>

#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <numeric>
#include <algorithm>

#include <functional>
#include <cctype>

#include <complex>
#include <string>
#include <sstream>

#define pb push_back
#define all(c) c.begin(),c.end()
#define rall(c) c.rbegin(),c.rend()

#define rep(i,n) for(int i=0;i<(n);i++)
#define tr(container, it) \
    for(typeof(container.begin()) it = container.begin(); it != container.end(); ++it)
#define present(container, element) (container.find(element) != container.end())
#define cpresent(container, element) (find(all(container),element) != container.end())

typedef long long ll;

const int dx[] = {1,0,-1,0};
const int dy[] = {0,-1,0,1};
const double EPS = 1e-9;

using namespace std;

int main(){
    ifstream fin("input.txt");
    ofstream fout("output.txt");

    int n;
    fin >> n;
    vector<vector<int> > memo(5001);
    vector<int> INPUT(2*n);
    rep(i,2*n) fin >> INPUT[i];

    rep(i,2*n){
        int x = INPUT[i];
        memo[x].push_back(i+1);
    }
    rep(i,5001){
        if(memo[i].size() % 2 != 0){
            fout << -1 << endl;
            return 0;
        }
    }
    rep(i,5001){
        rep(j,memo[i].size()/2){
            fout << memo[i][2*j] << " " <<  memo[i][2*j+1] << endl;
        }
    }
    return 0;
}

B. Jury Size
突然のカレンダー。ちょっとだけめんどくさかった。
でも実装ゲーなので簡単。

#include <iostream>
#include <fstream>
#include <iomanip>

#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <numeric>
#include <algorithm>

#include <functional>
#include <cctype>

#include <complex>
#include <string>
#include <sstream>

#define pb push_back
#define all(c) c.begin(),c.end()
#define rall(c) c.rbegin(),c.rend()

#define rep(i,n) for(int i=0;i<(n);i++)
#define tr(container, it) \
    for(typeof(container.begin()) it = container.begin(); it != container.end(); ++it)
#define present(container, element) (container.find(element) != container.end())
#define cpresent(container, element) (find(all(container),element) != container.end())

typedef long long ll;
const int dx[] = {1,0,-1,0};
const int dy[] = {0,-1,0,1};
const double EPS = 1e-9;

using namespace std;
int daysInMonthOfNormalYear[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int daysInMonthOfLeapYear[] = {31,29,31,30,31,30,31,31,30,31,30,31};

int main(){
    ifstream fin("input.txt");
    ofstream fout("output.txt");

    int n;
    fin >> n;

    vector<int> working(800);
    for(int i=0;i<n;i++){
        int m,d,p,t;
        fin >> m >> d >> p >> t;
        m--;d--;
        int x = 366;
        for(int j=0;j<m;j++) x += daysInMonthOfNormalYear[j];
        x+= d;
        x-= t;
        for(int j=0;j<t;j++){
            working[x+j] += p;
        }
    }
    fout << *max_element(all(working)) << endl;
    return 0;
}