제출 #93485

#제출 시각아이디문제언어결과실행 시간메모리
93485tincamateiTeams (IOI15_teams)C++14
34 / 100
4024 ms61716 KiB
#include <bits/stdc++.h>
#include "teams.h"

using namespace std;

const int MAX_N = 500000;

int n;
int a[MAX_N], b[MAX_N];

vector<int> goright[1+MAX_N];
vector<int> goleft[1+MAX_N];

void init(int N, int A[], int B[]) {
  n = N;

  for(int i = 0; i < n; ++i) {
    a[i] = A[i];
    b[i] = B[i];
  }
  for(int i = 0; i < N; ++i) {
    goright[a[i]].push_back(i);
    goleft[b[i]].push_back(i);
  }
}

int can(int M, int K[]) {
  set<pair<int, int> > xd;

  std::sort(K, K + M);

  int lastup = 0;
  for(int i = 1; i <= n; ++i) {
    for(int j = 0; j < goright[i].size(); ++j) {
      int it = goright[i][j];
      xd.insert(make_pair(b[it], it));
    }

    while(lastup < M && K[lastup] == i) {
      for(int j = 0; j < i; ++j) {
        if(xd.empty())
          return false;
        xd.erase(xd.begin());
      }
      ++lastup;
    }

    for(int j = 0; j < goleft[i].size(); ++j) {
      int it = goleft[i][j];
      xd.erase(make_pair(i, it));
    }
  }

	return lastup == M;
}

컴파일 시 표준 에러 (stderr) 메시지

teams.cpp: In function 'int can(int, int*)':
teams.cpp:34:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j = 0; j < goright[i].size(); ++j) {
                    ~~^~~~~~~~~~~~~~~~~~~
teams.cpp:48:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j = 0; j < goleft[i].size(); ++j) {
                    ~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...